home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / oasis.zip / OASDOC1.TXT < prev    next >
Text File  |  1988-08-05  |  521KB  |  16,435 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.                                     Open Architecture                                    Open Architecture
  21.  
  22.                                  Screen Interface System                                 Screen Interface System
  23.  
  24.                                       ( O A S I S )                                      ( O A S I S )
  25.  
  26.                                Version 4.1  -  Evaluation                               Version 4.1  -  Evaluation
  27.  
  28.  
  29.                                EUREKA SOFTWARE ASSOCIATES                               EUREKA SOFTWARE ASSOCIATES
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.                                     REFERENCE MANUAL                                    REFERENCE MANUAL
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.                                         O A S I S
  84.  
  85.  
  86.  
  87.                                          NOTICE                                         NOTICE                                         ______
  88.  
  89.  
  90.           This document  and the  information contained  herein as  well as the
  91.           described  software  'OASIS'  (Open   Architecture  Screen  Interface
  92.           System)  are  protected  by  international  copyright  law and treaty
  93.           provisions. 
  94.           They are provided to  you under  a shareware  scheme whose conditions
  95.           and terms  are explained in Appendix B of this manual and may only be
  96.           used in accordance with these conditions.
  97.  
  98.  
  99.  
  100.           Both this documentation and the program  are provided  strictly on an          Both this documentation and the program  are provided  strictly on an
  101.           'As Is' Basis.          'As Is' Basis.
  102.  
  103.           There  is  no  warranty,  expressed  or  implied, with respect to the
  104.           program  or   the  documentation,   including  but   not  limited  to
  105.           merchantability and  fitness for a particular purpose with respect to
  106.           defects in the program or the documentation. In no event shall Martin
  107.           Hossfeld  be  liable  for  any  loss  of  profit or any other damage,
  108.           including but  not limited  to special,  incidental, consequential or
  109.           other damages. 
  110.  
  111.  
  112.  
  113.                                 Copyright (C) 1987, 1988
  114.  
  115.                                EUREKA SOFTWARE ASSOCIATES
  116.  
  117.                Martin Hossfeld                         Remy Fesnoux 
  118.                12, Pinewood Green                      2344 Yorkshire
  119.                Iver Heath, Bucks. SL0 0QP              Ann Arbor, MI 48104
  120.                United Kingdom                          USA
  121.  
  122.  
  123.                                   All Rights Reserved.                                  All Rights Reserved.
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.                                     Acknowledgements                                    Acknowledgements                                    ________________
  151.  
  152.  
  153.  
  154.           IBM,  IBM  PC,  XT,  AT  and  PC  DOS are trademarks of International
  155.           Business Machines Corporation.
  156.  
  157.           Burroughs and TD830 are trademarks of Unisys Corporation.
  158.  
  159.           Turbo Pascal is a registered trademark of Borland International Inc.
  160.  
  161.           MS DOS is a registered trademark of Microsoft Corporation. 
  162.  
  163.           Hercules  Craphics   Card  is   a  trademark   of  Hercules  Computer
  164.           Technology.
  165.  
  166.           OASIS, SFD,  SCL, Screen Format Designer, Screen Control Language and
  167.           Open Architecture  Screen Interface  System are  trademarks of EUREKA
  168.           SOFTWARE ASSOCIATES.
  169.  
  170.           'Lightning' is a trademark of PCSG Inc.
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  206.  
  207.  
  208.           Introduction           Introduction . . . . . . . . . . . . . . . . . . . . . . . . . .   12
  209.                What is OASIS?  . . . . . . . . . . . . . . . . . . . . . .   12
  210.                About this manual                                  . . . . . . . . . . . . . . . . . . . . .   13
  211.                What this manual assumes                                          . . . . . . . . . . . . . . . . .   14
  212.                What you will learn                                    . . . . . . . . . . . . . . . . . . . .   14
  213.  
  214.  
  215.           Chapter I           Chapter I  . . . . . . . . . . . . . . . . . . . . . . . . . . .   16
  216.  
  217.           Overview                    . . . . . . . . . . . . . . . . . . . . . . . . . . . .   18
  218.                The Screen Format Designer (SFD)                                                  . . . . . . . . . . . . .   20
  219.                The Screen Control Language (SCL) . . . . . . . . . . . . .   21
  220.                Application programs written with OASIS . . . . . . . . . .   22
  221.                Some Feature Explanations . . . . . . . . . . . . . . . . .   23
  222.                     Screen Related Program Parameters  . . . . . . . . . .   23
  223.                     Colors and Display Attributes  . . . . . . . . . . . .   23
  224.                     Non Standard Keyboard Layouts  . . . . . . . . . . . .   23
  225.           Program development with OASIS . . . . . . . . . . . . . . . . .   24
  226.                A. Declarative Phase  . . . . . . . . . . . . . . . . . . .   24
  227.                B. Procedural Phase . . . . . . . . . . . . . . . . . . . .   25
  228.           Differences to traditional program development . . . . . . . . .   26
  229.                What instead of how . . . . . . . . . . . . . . . . . . . .   26
  230.                Early Tests . . . . . . . . . . . . . . . . . . . . . . . .   26
  231.                Less Programming  . . . . . . . . . . . . . . . . . . . . .   26
  232.                Easier changes  . . . . . . . . . . . . . . . . . . . . . .   26
  233.                Nationalization, customization made simple  . . . . . . . .   26
  234.           System Installation and Setup  . . . . . . . . . . . . . . . . .   27
  235.                The Distribution Disks  . . . . . . . . . . . . . . . . . .   27
  236.                System Requirements . . . . . . . . . . . . . . . . . . . .   28
  237.                Installation Instructions                                          . . . . . . . . . . . . . . . . .   29
  238.  
  239.  
  240.           Chapter II           Chapter II . . . . . . . . . . . . . . . . . . . . . . . . . . .   30
  241.  
  242.           Explanation of keyboard functions  . . . . . . . . . . . . . . .   33
  243.                Variables and Constants . . . . . . . . . . . . . . . . . .   33
  244.                Variable field specials . . . . . . . . . . . . . . . . . .   34
  245.                Editing keys  . . . . . . . . . . . . . . . . . . . . . . .   34
  246.                Return  . . . . . . . . . . . . . . . . . . . . . . . . . .   35
  247.                Escape  . . . . . . . . . . . . . . . . . . . . . . . . . .   35
  248.                Function keys . . . . . . . . . . . . . . . . . . . . . . .   36
  249.           Errors & Automatic Help System . . . . . . . . . . . . . . . . .   37
  250.                Invalid data entry  . . . . . . . . . . . . . . . . . . . .   37
  251.                Missing mandatory data  . . . . . . . . . . . . . . . . . .   37
  252.                Autohelp feature  . . . . . . . . . . . . . . . . . . . . .   37
  253.           Design Cycle . . . . . . . . . . . . . . . . . . . . . . . . . .   38
  254.                Designing a format layout . . . . . . . . . . . . . . . . .   40
  255.                     Layout editor  -  Meaning of keys  . . . . . . . . . .   41
  256.                     Changing the Format Size . . . . . . . . . . . . . . .   42
  257.  
  258.           Introduction                                                 page 4          Introduction                                                 page 4
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  272.  
  273.                     Drawing fields . . . . . . . . . . . . . . . . . . . .   43
  274.                     Drawing boxes  . . . . . . . . . . . . . . . . . . . .   44
  275.                     Selecting Linestyles . . . . . . . . . . . . . . . . .   45
  276.                     Field specifications . . . . . . . . . . . . . . . . .   46
  277.                     Format Control Specifications  . . . . . . . . . . . .   49
  278.                     User Function Key Specifications . . . . . . . . . . .   49
  279.                Testing a Format                                  . . . . . . . . . . . . . . . . . . . . .   51
  280.                     Change field specs/Active field  . . . . . . . . . . .   51
  281.                     Change field specs/Other field . . . . . . . . . . . .   51
  282.                     Global Colors/Attributes . . . . . . . . . . . . . . .   51
  283.                     Format/Control Specs . . . . . . . . . . . . . . . . .   51
  284.                Colors/Attributes . . . . . . . . . . . . . . . . . . . . .   52
  285.                     Field Attributes . . . . . . . . . . . . . . . . . . .   52
  286.                     Color Screen Attributes  . . . . . . . . . . . . . . .   53
  287.                     Monochrome Attributes  . . . . . . . . . . . . . . . .   54
  288.                Conclusion  . . . . . . . . . . . . . . . . . . . . . . . .   55
  289.           Functional Description - Introduction  . . . . . . . . . . . . .   57
  290.                SFD Basic Program Layout  . . . . . . . . . . . . . . . . .   58
  291.                Files used by SFD . . . . . . . . . . . . . . . . . . . . .   59
  292.                     SFD.FOR  . . . . . . . . . . . . . . . . . . . . . . .   59
  293.                     SFD.FIN  . . . . . . . . . . . . . . . . . . . . . . .   59
  294.                     SFD.MSG  . . . . . . . . . . . . . . . . . . . . . . .   59
  295.                     SFD.ERR  . . . . . . . . . . . . . . . . . . . . . . .   59
  296.                     SFD.DEF  . . . . . . . . . . . . . . . . . . . . . . .   59
  297.                Files generated by SFD  . . . . . . . . . . . . . . . . . .   60
  298.                     <workfile>.SCS . . . . . . . . . . . . . . . . . . . .   60
  299.                     <workfile>.SCI . . . . . . . . . . . . . . . . . . . .   60
  300.                     <workfile>.MSG . . . . . . . . . . . . . . . . . . . .   60
  301.                Basic Keyboard Functions  . . . . . . . . . . . . . . . . .   61
  302.                Online Help Facility  . . . . . . . . . . . . . . . . . . .   62
  303.                     Explanatory field input informations . . . . . . . . .   62
  304.                     AutoHelp . . . . . . . . . . . . . . . . . . . . . . .   62
  305.                     Format Help  . . . . . . . . . . . . . . . . . . . . .   62
  306.                     Field Help . . . . . . . . . . . . . . . . . . . . . .   62
  307.                Input Error Handling  . . . . . . . . . . . . . . . . . . .   63
  308.                     Invalid Key  . . . . . . . . . . . . . . . . . . . . .   63
  309.                     Wrong data . . . . . . . . . . . . . . . . . . . . . .   63
  310.                     Missing mandatory data . . . . . . . . . . . . . . . .   63
  311.           The Main Menu  . . . . . . . . . . . . . . . . . . . . . . . . .   64
  312.                The Menu Header . . . . . . . . . . . . . . . . . . . . . .   64
  313.                     Act DIR  . . . . . . . . . . . . . . . . . . . . . . .   64
  314.                     Workfile . . . . . . . . . . . . . . . . . . . . . . .   64
  315.                     Formats  . . . . . . . . . . . . . . . . . . . . . . .   64
  316.                The Main body . . . . . . . . . . . . . . . . . . . . . . .   64
  317.                The Message Line  . . . . . . . . . . . . . . . . . . . . .   64
  318.           DESIGN . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   65
  319.           FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   66
  320.                Load File . . . . . . . . . . . . . . . . . . . . . . . . .   66
  321.                CHDir . . . . . . . . . . . . . . . . . . . . . . . . . . .   66
  322.                Crunch  . . . . . . . . . . . . . . . . . . . . . . . . . .   67
  323.  
  324.           Introduction                                                 page 5          Introduction                                                 page 5
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  338.  
  339.           FORMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   68
  340.                Copy  . . . . . . . . . . . . . . . . . . . . . . . . . . .   68
  341.                Delete  . . . . . . . . . . . . . . . . . . . . . . . . . .   68
  342.                Undelete  . . . . . . . . . . . . . . . . . . . . . . . . .   68
  343.                Transfer  . . . . . . . . . . . . . . . . . . . . . . . . .   68
  344.           DISPLAY  . . . . . . . . . . . . . . . . . . . . . . . . . . . .   69
  345.                Formats . . . . . . . . . . . . . . . . . . . . . . . . . .   69
  346.                Files . . . . . . . . . . . . . . . . . . . . . . . . . . .   69
  347.                Directory . . . . . . . . . . . . . . . . . . . . . . . . .   69
  348.           PRINT  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   70
  349.                Single format . . . . . . . . . . . . . . . . . . . . . . .   70
  350.                All formats . . . . . . . . . . . . . . . . . . . . . . . .   70
  351.                Format list . . . . . . . . . . . . . . . . . . . . . . . .   70
  352.           DEFAULTS . . . . . . . . . . . . . . . . . . . . . . . . . . . .   71
  353.                Design  . . . . . . . . . . . . . . . . . . . . . . . . . .   71
  354.                     Left Field Limit . . . . . . . . . . . . . . . . . . .   71
  355.                     Right Field Limit  . . . . . . . . . . . . . . . . . .   71
  356.                     Background Color . . . . . . . . . . . . . . . . . . .   71
  357.                     Foreground Color . . . . . . . . . . . . . . . . . . .   71
  358.                     Surrounding Area . . . . . . . . . . . . . . . . . . .   72
  359.                System defaults . . . . . . . . . . . . . . . . . . . . . .   73
  360.                     Auto Help  . . . . . . . . . . . . . . . . . . . . . .   73
  361.                     After n Errors . . . . . . . . . . . . . . . . . . . .   73
  362.                     Beep yes/no  . . . . . . . . . . . . . . . . . . . . .   73
  363.                     Length (ms)  . . . . . . . . . . . . . . . . . . . . .   73
  364.                     Pitch (Hz) . . . . . . . . . . . . . . . . . . . . . .   73
  365.                     Field Blink Frequency  . . . . . . . . . . . . . . . .   73
  366.                     Char YES . . . . . . . . . . . . . . . . . . . . . . .   74
  367.                     Char NO  . . . . . . . . . . . . . . . . . . . . . . .   74
  368.                     Cursor Wraparound Disabled . . . . . . . . . . . . . .   74
  369.           EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   75
  370.                Terminate Program . . . . . . . . . . . . . . . . . . . . .   75
  371.           Format Design  . . . . . . . . . . . . . . . . . . . . . . . . .   76
  372.           Basic Work Flow  . . . . . . . . . . . . . . . . . . . . . . . .   76
  373.                The Layout Editor . . . . . . . . . . . . . . . . . . . . .   77
  374.                     Layout editor Meaning of keys  . . . . . . . . . . . .   78
  375.                     Drawing Fields . . . . . . . . . . . . . . . . . . . .   79
  376.                     Special Functions  . . . . . . . . . . . . . . . . . .   80
  377.                     Menu Functions . . . . . . . . . . . . . . . . . . . .   83
  378.                     Format Specifications  . . . . . . . . . . . . . . . .   85
  379.                The Test Feature  . . . . . . . . . . . . . . . . . . . . .   94
  380.                     Introduction . . . . . . . . . . . . . . . . . . . . .   94
  381.                     The local Menu . . . . . . . . . . . . . . . . . . . .   94
  382.                     System Limitations . . . . . . . . . . . . . . . . . .   95
  383.  
  384.  
  385.           Chapter III           Chapter III  . . . . . . . . . . . . . . . . . . . . . . . . . .   97
  386.  
  387.           Introduction . . . . . . . . . . . . . . . . . . . . . . . . . .  100
  388.           SCL Files  . . . . . . . . . . . . . . . . . . . . . . . . . . .  101
  389.  
  390.           Introduction                                                 page 6          Introduction                                                 page 6
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  404.  
  405.                SCL.TPU . . . . . . . . . . . . . . . . . . . . . . . . . .  101
  406.                SCL.ERR . . . . . . . . . . . . . . . . . . . . . . . . . .  101
  407.           SCL - Global Declarations  . . . . . . . . . . . . . . . . . . .  102
  408.                General . . . . . . . . . . . . . . . . . . . . . . . . . .  102
  409.                SCL Control Parameters  . . . . . . . . . . . . . . . . . .  103
  410.                     Max_Error_Messages . . . . . . . . . . . . . . . . . .  103
  411.                     Max_Input_Messages . . . . . . . . . . . . . . . . . .  103
  412.                     Max_Heap_Screens . . . . . . . . . . . . . . . . . . .  103
  413.                File Names  . . . . . . . . . . . . . . . . . . . . . . . .  104
  414.                     Screenfile_Ext . . . . . . . . . . . . . . . . . . . .  104
  415.                     Indexfile_Ext  . . . . . . . . . . . . . . . . . . . .  104
  416.                     Errorfile_Ext  . . . . . . . . . . . . . . . . . . . .  104
  417.                     Messagefile_Ext  . . . . . . . . . . . . . . . . . . .  104
  418.                Help System Parameters  . . . . . . . . . . . . . . . . . .  105
  419.                     Autohelp_Screen  . . . . . . . . . . . . . . . . . . .  105
  420.                     Maxerrors  . . . . . . . . . . . . . . . . . . . . . .  105
  421.                     Auto_Help_Set  . . . . . . . . . . . . . . . . . . . .  105
  422.                     Code_Help_Field  . . . . . . . . . . . . . . . . . . .  105
  423.                     Code_Help_Format . . . . . . . . . . . . . . . . . . .  105
  424.                Beep Parameters . . . . . . . . . . . . . . . . . . . . . .  106
  425.                     Beep_Off . . . . . . . . . . . . . . . . . . . . . . .  106
  426.                     Beep_Time  . . . . . . . . . . . . . . . . . . . . . .  106
  427.                     Beep_Frequency_1 . . . . . . . . . . . . . . . . . . .  106
  428.                     Beep_Frequency_2 . . . . . . . . . . . . . . . . . . .  106
  429.                Message Display . . . . . . . . . . . . . . . . . . . . . .  107
  430.                     Input_Msg_Set  . . . . . . . . . . . . . . . . . . . .  107
  431.                     Error_Msg_Set  . . . . . . . . . . . . . . . . . . . .  107
  432.                Field Attributes  . . . . . . . . . . . . . . . . . . . . .  108
  433.                     Blink_Count  . . . . . . . . . . . . . . . . . . . . .  108
  434.                     Timer_Intervall  . . . . . . . . . . . . . . . . . . .  108
  435.                     Mark_Field_Left  . . . . . . . . . . . . . . . . . . .  108
  436.                     Mark_Field_Right . . . . . . . . . . . . . . . . . . .  108
  437.                Key Specifications  . . . . . . . . . . . . . . . . . . . .  109
  438.                     Code_Cancel_Act  . . . . . . . . . . . . . . . . . . .  109
  439.                     Code_Abort . . . . . . . . . . . . . . . . . . . . . .  109
  440.                     Code_Escape  . . . . . . . . . . . . . . . . . . . . .  109
  441.                Performing 'Edit' functions . . . . . . . . . . . . . . . .  110
  442.                Function Keys . . . . . . . . . . . . . . . . . . . . . . .  110
  443.                Nationalisation Parameters  . . . . . . . . . . . . . . . .  111
  444.                     Code_Yes . . . . . . . . . . . . . . . . . . . . . . .  111
  445.                     Code_No  . . . . . . . . . . . . . . . . . . . . . . .  111
  446.                Character sets for Variables  . . . . . . . . . . . . . . .  111
  447.                Country Information Parameters  . . . . . . . . . . . . . .  112
  448.                     SCL_Country  . . . . . . . . . . . . . . . . . . . . .  112
  449.                     Country  . . . . . . . . . . . . . . . . . . . . . . .  112
  450.                     Date_Format  . . . . . . . . . . . . . . . . . . . . .  112
  451.                     Date_Separator . . . . . . . . . . . . . . . . . . . .  112
  452.                     Time_Separator . . . . . . . . . . . . . . . . . . . .  113
  453.                     Currency . . . . . . . . . . . . . . . . . . . . . . .  113
  454.                SCL Control Parameters  . . . . . . . . . . . . . . . . . .  114
  455.  
  456.           Introduction                                                 page 7          Introduction                                                 page 7
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  470.  
  471.                     Progpath . . . . . . . . . . . . . . . . . . . . . . .  114
  472.                     No_Wrap  . . . . . . . . . . . . . . . . . . . . . . .  114
  473.                Format Pointers . . . . . . . . . . . . . . . . . . . . . .  115
  474.                     S_Ptr  . . . . . . . . . . . . . . . . . . . . . . . .  115
  475.                     R_Ptr  . . . . . . . . . . . . . . . . . . . . . . . .  115
  476.                     W_Ptr  . . . . . . . . . . . . . . . . . . . . . . . .  116
  477.                Format Handling Parameters  . . . . . . . . . . . . . . . .  117
  478.                     Active_Field . . . . . . . . . . . . . . . . . . . . .  117
  479.                     Char_Code  . . . . . . . . . . . . . . . . . . . . . .  117
  480.                     Glb_Error  . . . . . . . . . . . . . . . . . . . . . .  117
  481.                Format Handling Parameters  . . . . . . . . . . . . . . . .  118
  482.                     User_Function  . . . . . . . . . . . . . . . . . . . .  118
  483.                     Begin_Of_Field . . . . . . . . . . . . . . . . . . . .  118
  484.                     End_Of_Field . . . . . . . . . . . . . . . . . . . . .  118
  485.                     End_Of_Format  . . . . . . . . . . . . . . . . . . . .  119
  486.                     Checkrequired  . . . . . . . . . . . . . . . . . . . .  119
  487.                Screen related Parameters . . . . . . . . . . . . . . . . .  120
  488.                     Screen_Mode  . . . . . . . . . . . . . . . . . . . . .  120
  489.                     Mono_Adapter . . . . . . . . . . . . . . . . . . . . .  120
  490.                     Color_True . . . . . . . . . . . . . . . . . . . . . .  120
  491.                Format related Parameters . . . . . . . . . . . . . . . . .  121
  492.                     Xoff . . . . . . . . . . . . . . . . . . . . . . . . .  121
  493.                     Yoff . . . . . . . . . . . . . . . . . . . . . . . . .  121
  494.                Background Processing Parameters  . . . . . . . . . . . . .  122
  495.                     LP_Background_Pointer  . . . . . . . . . . . . . . . .  122
  496.                     HP_Background_Pointer  . . . . . . . . . . . . . . . .  122
  497.                Miscellaneous Parameters  . . . . . . . . . . . . . . . . .  123
  498.                     Glb_Status . . . . . . . . . . . . . . . . . . . . . .  123
  499.                     Glb_Ok . . . . . . . . . . . . . . . . . . . . . . . .  123
  500.                     Format_Aborted . . . . . . . . . . . . . . . . . . . .  123
  501.                Global Type Declarations  . . . . . . . . . . . . . . . . .  124
  502.           Procedures and Functions . . . . . . . . . . . . . . . . . . . .  125
  503.                Introduction  . . . . . . . . . . . . . . . . . . . . . . .  125
  504.                Entering and leaving SCL  . . . . . . . . . . . . . . . . .  126
  505.                Structure of a SCL Program  . . . . . . . . . . . . . . . .  127
  506.                Loading and displaying formats  . . . . . . . . . . . . . .  128
  507.                X_Max and Y_Max . . . . . . . . . . . . . . . . . . . . . .  130
  508.                Handling format input . . . . . . . . . . . . . . . . . . .  131
  509.                Format Handling Control . . . . . . . . . . . . . . . . . .  133
  510.                Reading/Writting Format Fields  . . . . . . . . . . . . . .  134
  511.                     Introduction . . . . . . . . . . . . . . . . . . . . .  134
  512.                     Reading Field Content  . . . . . . . . . . . . . . . .  135
  513.                     Writing Field Content  . . . . . . . . . . . . . . . .  137
  514.                     Deleting Field Content . . . . . . . . . . . . . . . .  138
  515.                     Reading the 'Selected' Attribute . . . . . . . . . . .  139
  516.                     Writing the 'Selected' Attribute . . . . . . . . . . .  140
  517.                String Handling routines  . . . . . . . . . . . . . . . . .  141
  518.                System Functions  . . . . . . . . . . . . . . . . . . . . .  145
  519.                Date related routines . . . . . . . . . . . . . . . . . . .  147
  520.                Time related Routines . . . . . . . . . . . . . . . . . . .  149
  521.  
  522.           Introduction                                                 page 8          Introduction                                                 page 8
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  536.  
  537.                Background Processing Tasks . . . . . . . . . . . . . . . .  150
  538.                Other Routines  . . . . . . . . . . . . . . . . . . . . . .  151
  539.  
  540.  
  541.           Chapter IV           Chapter IV . . . . . . . . . . . . . . . . . . . . . . . . . . .  153
  542.  
  543.           Data Communications Subsystem  . . . . . . . . . . . . . . . . .  155
  544.           Introduction . . . . . . . . . . . . . . . . . . . . . . . . . .  156
  545.                Global Communications Parameters  . . . . . . . . . . . . .  157
  546.                Timers and Delays . . . . . . . . . . . . . . . . . . . . .  158
  547.                Data Communications Control Characters  . . . . . . . . . .  159
  548.                Other Declarations  . . . . . . . . . . . . . . . . . . . .  160
  549.           Procedures and Functions                                    . . . . . . . . . . . . . . . . . . . .  162
  550.                Initializing and Terminating DC . . . . . . . . . . . . . .  163
  551.                Sending Data  . . . . . . . . . . . . . . . . . . . . . . .  164
  552.                Receiving Data  . . . . . . . . . . . . . . . . . . . . . .  166
  553.                Other Functions . . . . . . . . . . . . . . . . . . . . . .  167
  554.                Low Level Routines  . . . . . . . . . . . . . . . . . . . .  168
  555.           Example Programs                            . . . . . . . . . . . . . . . . . . . . . . . .  170
  556.                A Simple Line Monitor (SAMPLE7.PAS) . . . . . . . . . . . .  171
  557.                     Listing of SAMPLE7.PAS . . . . . . . . . . . . . . . .  172
  558.                     Description of SAMPLE7.PAS . . . . . . . . . . . . . .  177
  559.                A Terminal Emulator Program (SAMPLE 8)  . . . . . . . . . .  179
  560.                     Listing of Example Program 8 . . . . . . . . . . . . .  180
  561.                     Description of SAMPLE8.PAS . . . . . . . . . . . . . .  187
  562.           Program Discussion . . . . . . . . . . . . . . . . . . . . . . .  190
  563.                Introduction  . . . . . . . . . . . . . . . . . . . . . . .  191
  564.                Example 1  (OASIS Easy Fields)  . . . . . . . . . . . . . .  192
  565.                     Explanations of SAMPLE1.PAS  . . . . . . . . . . . . .  193
  566.                Example 2  (OASIS Print Labels) . . . . . . . . . . . . . .  195
  567.                     Explanations of SAMPLE2.PAS  . . . . . . . . . . . . .  196
  568.                Example 3  (OASIS Formats Stack)    . . . . . . . . . . . .  200
  569.                     Listing of SAMPLE3.PAS . . . . . . . . . . . . . . . .  201
  570.                     Explanations of SAMPLE3.PAS  . . . . . . . . . . . . .  202
  571.                Example 4  (OASIS Automatic Disk Menu)  . . . . . . . . . .  204
  572.                Example 5  (OASIS SCL Demo) . . . . . . . . . . . . . . . .  208
  573.                     Menu . . . . . . . . . . . . . . . . . . . . . . . . .  208
  574.                     Country Demo . . . . . . . . . . . . . . . . . . . . .  209
  575.                     Date Demo  . . . . . . . . . . . . . . . . . . . . . .  211
  576.                     Special Fields Demo  . . . . . . . . . . . . . . . . .  213
  577.           SCL System Details . . . . . . . . . . . . . . . . . . . . . . .  216
  578.                Service Routines  . . . . . . . . . . . . . . . . . . . . .  217
  579.                Background Processing Tasks . . . . . . . . . . . . . . . .  219
  580.                READING AND WRITING FIELDS                                            . . . . . . . . . . . . . . . .  222
  581.                SCL Input Character Processing                                                . . . . . . . . . . . . . .  224
  582.                The Error Message File  . . . . . . . . . . . . . . . . . .  225
  583.                SCL - System Resource Considerations  . . . . . . . . . . .  226
  584.                     Disk Access  . . . . . . . . . . . . . . . . . . . . .  226
  585.                     Processor Requirements . . . . . . . . . . . . . . . .  226
  586.                     Format File -Disk Space Requirements . . . . . . . . .  226
  587.  
  588.           Introduction                                                 page 9          Introduction                                                 page 9
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  602.  
  603.                     SCL Code Space Requirements  . . . . . . . . . . . . .  226
  604.                     SCL Data Space Requirements  . . . . . . . . . . . . .  226
  605.                     Total Memory Requirements  . . . . . . . . . . . . . .  227
  606.           Tips & Tricks  . . . . . . . . . . . . . . . . . . . . . . . . .  228
  607.                Entry  of   Characters  not  normally  accessible  via  the
  608.                     Keyboard . . . . . . . . . . . . . . . . . . . . . . .  228
  609.                Blinking Fields . . . . . . . . . . . . . . . . . . . . . .  228
  610.                Use of the 'Intensity' field attribute on Color systems . .  228
  611.                The 'Selected' Attribute in Menus . . . . . . . . . . . . .  228
  612.                Preventing automatic termination of a format  . . . . . . .  229
  613.                Highlighting text on screen formats . . . . . . . . . . . .  229
  614.                Special Fields  . . . . . . . . . . . . . . . . . . . . . .  229
  615.                Storing strings in <Name>.ERR . . . . . . . . . . . . . . .  229
  616.                Using Field Input Messages for Help Screens . . . . . . . .  230
  617.                Using 'Goto_Field'  . . . . . . . . . . . . . . . . . . . .  231
  618.           Alphabethic  List  of  all  User  accessible  SCL  Procedures  &
  619.                Functions . . . . . . . . . . . . . . . . . . . . . . . . .  234
  620.           Datacom Control Characters . . . . . . . . . . . . . . . . . . .  237
  621.           Field Attributes and Colors  . . . . . . . . . . . . . . . . . .  238
  622.                Possible Field Attributes . . . . . . . . . . . . . . . . .  238
  623.                Colors  . . . . . . . . . . . . . . . . . . . . . . . . . .  238
  624.           Functions in SCL Programs  . . . . . . . . . . . . . . . . . . .  239
  625.           Standard SCL Error Messages  . . . . . . . . . . . . . . . . . .  240
  626.                The Shareware Idea  . . . . . . . . . . . . . . . . . . . .  241
  627.           OASIS Products & Licencing Terms . . . . . . . . . . . . . . . .  242
  628.                OASIS Demo package  . . . . . . . . . . . . . . . . . . . .  242
  629.                OASIS Evaluation  . . . . . . . . . . . . . . . . . . . . .  243
  630.                OASIS . . . . . . . . . . . . . . . . . . . . . . . . . . .  246
  631.           Invoice & Order Form . . . . . . . . . . . . . . . . . . . . . .  247
  632.                Order Form  . . . . . . . . . . . . . . . . . . . . . . . .  247
  633.                Invoice . . . . . . . . . . . . . . . . . . . . . . . . . .  248
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.           Introduction                                                 page 10          Introduction                                                 page 10
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.           Introduction                                                 page 11          Introduction                                                 page 11
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  734.  
  735.  
  736.                                       Introduction                                      Introduction                                      ____________
  737.  
  738.                        
  739.           What is OASIS?          What is OASIS?
  740.  
  741.           OASIS stands for Open Architecture Screen Interface System.
  742.  
  743.           OASIS is a fourth generation programming tool to develop screen based
  744.           application programs and User Interfaces on  Micro Computers.  No one
  745.           can deny  that computers  still primarily  rely on visual and tactile
  746.           means  of  communication  to  interact  with  its  users.   With  the
  747.           proliferation  of  microcomputers  in  recent years, as more and more
  748.           people  became  users  they  consequently  behaved  as  consumers who
  749.           implicitly stressed  the emphasis  on human  interfacing, as a result
  750.           products offered more and  more  ergonomic  features.  Among  the top
  751.           features speed  is definitely  high on  the list. Obviously the first
  752.           and most tangible advantage of fast  applications is  an overall gain
  753.           of time  to complete  a given  project, however this is certainly not
  754.           the most important one. What matters  more is  the response  time, in
  755.           other  words  the  time  it  takes  for  the  application  to process
  756.           elementary tasks which if not carefully timed induce  unnecessary and
  757.           undesirable delays.  Neglecting this  factor, no  matter how small or
  758.           hardly perceptible  delays can  be, invariably  results in operator's
  759.           irritations  that  may  in  some  cases  lead  to reject the product.
  760.           Otherwise what the user wants is in essence a tool easy to use, quick
  761.           to learn  with sufficient help information readily available on line,
  762.           flexible  but   logical  and   powerful,  in   other  word  something
  763.           comfortable and easy on the eyes that meet his expectations. 
  764.           On the other side of the fence we have the programer who is tasked to
  765.           satisfy all  these requirements  while focussing  on performance thus
  766.           making the  product attractive and marketable within a tight schedule
  767.           in order to be one of the first in this competitive marketplace. 
  768.           This is precisely where OASIS come into play  to serve  the interests
  769.           of  all  parties.  OASIS  is  an  immensely  powerful  tool  for  the
  770.           programmer because it allows him to  cut down  development time while
  771.           ensuring outstanding  human interface features and still focus on the
  772.           intrinsic part of the application thus  optimizing its  resources and
  773.           performances.  How  OASIS  achieves  this is described in the product
  774.           overview. To illustrate what has just been is said here  you ought to
  775.           know  that  OASIS  and  more  specifically SFD (Screen File Designer)
  776.           itself has been designed using the semantics that governs SCL (Screen
  777.           Control Language) itself and for that reason is indeed an application
  778.           of itself, in other words SFD was designed using SFD, a sort of CATCH
  779.           22 scenario. 
  780.           To sum  up this brief introduction one could say that OASIS is to the
  781.           DESIGN  AND  MANAGEMENT  OF  USER  INTERFACE   what  the   advent  of
  782.           wordprocessors  in  the  mid  1970's  has  done  to  TEXT WRITING AND
  783.           EDITING.
  784.  
  785.  
  786.           Introduction                                                 page 12          Introduction                                                 page 12
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  800.  
  801.  
  802.                                     About this manual                                    About this manual                                    _________________
  803.  
  804.  
  805.           This manual describes OASIS and its various components and how to use
  806.           them. This  book articulates itself around three chapters followed by
  807.           one appendix.
  808.  
  809.  
  810.           CHAPTER I System Overview           CHAPTER I System Overview
  811.                The purpose of this  chapter is  to arouse  the interest  of the
  812.                reader  by  describing  OASIS  main components and listing their
  813.                features.
  814.  
  815.            
  816.           CHAPTER II Screen File Designer (SFD)          CHAPTER II Screen File Designer (SFD)
  817.                After a short introduction to SFD  you will  be paced  through a
  818.                comprehensive  tutorial   followed  by  a  chapter  providing  a
  819.                functional description of SFD.
  820.  
  821.            
  822.           CHAPTER III Screen Control Language (SCL)           CHAPTER III Screen Control Language (SCL)
  823.                This chapter  discusses  in  details  the  major  procedures and
  824.                functions that constitute the heart of the system.
  825.  
  826.  
  827.           CHAPTER IV  SCL Data Communication subsystem          CHAPTER IV  SCL Data Communication subsystem
  828.                Since OASIS  can be  used   in a  micro to mainframe environment
  829.                this chapter  is  entirely  dedicated  to  the DataCommunication
  830.                extensions of SCL.
  831.  
  832.  
  833.           APPENDIX A          APPENDIX A
  834.                This  chapter  covers  several  advanced OASIS features and also
  835.                contains descriptions and discussions of 5 sample programs. 
  836.  
  837.  
  838.           APPENDIX B          APPENDIX B
  839.                Lists and Tables.
  840.                OASIS products & Licencing Terms.
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.           Introduction                                                 page 13          Introduction                                                 page 13
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  866.  
  867.  
  868.                                 What this manual assumes                                What this manual assumes                                ________________________
  869.  
  870.  
  871.           In order to fully exploit the Secret of SCL the reader is expected to
  872.           have some  experience with programming languages and especially TURBO
  873.           PASCAL. We assume that the reader  can refer  to BORLAND  manuals and
  874.           references in  order to  write SCL  programs, compile,  debug and run
  875.           them.
  876.  
  877.  
  878.  
  879.  
  880.                                    What you will learn                                   What you will learn                                   ___________________
  881.  
  882.  
  883.           The best method to learn something new is to practice,  make mistakes
  884.           and learn  from them.  From the  very beginning, you will have at the
  885.           tip of your fingers all the power and  the flexibility  of the Screen
  886.           Format Designer  SFD, you  will soon  realize how intuitive it can be
  887.           and it won't take long before  you become  familiarized with  all the
  888.           keyboard functions and the system features. 
  889.           The tutorial  in chapter  II will pace you step by step in the design
  890.           of a  trivial screen  letting you  exercise almost  every function of
  891.           SFD. Within  a couple  of hours  you will  be able to design and test
  892.           fully fledged screens. 
  893.           Chapter III provides you with  the  basic  architecture  to elaborate
  894.           complex  programs  including  multiple  stacked screens (windows) and
  895.           background processing tasks. 
  896.           Chapter IV will let you include  data communication  routines to deal
  897.           with  the  outside  world.  Finally  a  set  of  programming  tips is
  898.           available  in  Appendix  A  to  the  expert  to   fine  tune  complex
  899.           applications to a breathtaking level.
  900.           We hope  that you will very shortly be able to unleash the full power
  901.           of OASIS  to your  benefit, your  limits being  your own imagination.
  902.           Good luck and have a good time.
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.           Introduction                                                 page 14          Introduction                                                 page 14
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.                           This Page is intentionally left blank
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.           Introduction                                                 page 15          Introduction                                                 page 15
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.                                         Chapter I                                        Chapter I                       
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1064.  
  1065.  
  1066.                        
  1067.                        
  1068.                        
  1069.                        
  1070.                        
  1071.                        
  1072.                        
  1073.                        
  1074.                        
  1075.                        
  1076.                        
  1077.                        
  1078.                        
  1079.                        
  1080.                        
  1081.                        
  1082.                        
  1083.                        
  1084.                                     Open Architecture                                    Open Architecture                       
  1085.                        
  1086.                                  Screen Interface System                                 Screen Interface System                       
  1087.                        
  1088.                        
  1089.                                         ( OASIS )                                        ( OASIS )                       
  1090.                        
  1091.                        
  1092.                        
  1093.                        
  1094.                                System Overview and Features                               System Overview and Features                                                    
  1095.                        
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.           Chapter I, System Overview and Features                      page 17          Chapter I, System Overview and Features                      page 17
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1130.  
  1131.                        
  1132.                                         Overview                                        Overview                                        ________                       
  1133.                        
  1134.                        
  1135.                        
  1136.           OASIS  allows  you  to  create  and  handle  state-of-the-art  screen          OASIS
  1137.           interfaces with many outstanding features in  a most  comfortable and
  1138.           efficient  way.  Due  to  its  background processing capabilities the
  1139.           handling of datacom and so on can also  be easily  achieved. OASIS is                                                                       OASIS
  1140.           not  an  application  generator.  Typically,  application  generators
  1141.           require some kind of a macro language which is usually rather limited
  1142.           in terms  of flexibility.  This often results in slow running, clumsy
  1143.           applications a too  high  price  to  be  paid  for  added programming
  1144.           convenience. 
  1145.           Instead, OASIS  is built on top of Turbo Pascal, leaving all features                   OASIS
  1146.           of this powerful development  system  available  to  you  for special
  1147.           requirements OASIS may not be capable to fulfill.                       OASIS
  1148.  
  1149.  
  1150.           With OASIS you can               OASIS
  1151.  
  1152.           * Add Micro based front ends to existing mainframe programs,
  1153.             taking over anything from Screen Management up to local data 
  1154.             storage etc.
  1155.  
  1156.           * Build the Micro part of distributed processing applications.
  1157.  
  1158.           * Write completely Micro based Applications utilizing virtually
  1159.  
  1160.             any number of screen formats.
  1161.  
  1162.           * Develop sophisticated Terminal Emulators.
  1163.  
  1164.  
  1165.  
  1166.  
  1167.           OASIS  is  a  sophisticated  and  powerful  user interface design and          OASIS
  1168.           management system that both  simplifies the  task of  the application
  1169.           writer and provides a very attractive interface to the end user.
  1170.           Using OASIS  not only  results in tremendeous time savings (depending                OASIS
  1171.           on the kind of  application  between  50  and  90  percent)  but also
  1172.           achieves perfect results.
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.           Chapter I, System Overview and Features                      page 18          Chapter I, System Overview and Features                      page 18
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1196.  
  1197.  
  1198.  
  1199.           OASIS has two main components:          OASIS has two main components:
  1200.                        
  1201.                        
  1202.                                            The Screen Format Designer (SFD)                    The Screen Format Designer (SFD)                       
  1203.                                               
  1204.                                            The Screen Control Language (SCL)                    The Screen Control Language (SCL)                       
  1205.  
  1206.  
  1207.  
  1208.           Screen Format Designer (SFD)          Screen Format Designer (SFD)
  1209.                        
  1210.           SFD is  an integrated application program, itself written with OASIS,          SFD                                                            OASIS
  1211.           introducing a new concept  in the  elaboration of  screen formats. It
  1212.           allows the  user to interactively design any screen format layouts on
  1213.           the principle of what you paint is what you get.  Away from  the host
  1214.           application SFD  lets you  define all  field parameters of the format
  1215.           plus a  large  suite  of  other  refinements  such  as  related error
  1216.           messages and  help screens.  Futhermore SFD enable you to dynamically                                                                    ___________
  1217.           test new formats before you even wrote a single line of code.           ____
  1218.  
  1219.  
  1220.  
  1221.  
  1222.           Screen Control Language (SCL)           Screen Control Language (SCL) 
  1223.                        
  1224.           SCL is a extensive collection of  Turbo Pascal  Source Routines built          SCL
  1225.           to  cater   for  all   aspects  of  format  access,  display,  window
  1226.           management, data capture, input  check,  display  of  error messages,
  1227.           help system.  By simply  including these routines in any Turbo Pascal
  1228.           Program, all of its features can be used just like a very high level,
  1229.           straightforward and easy to learn language extension to Turbo Pascal.
  1230.           This not only leaves all flexibility  to the  programmer, but enables
  1231.           him to  create highly professional applications with many outstanding
  1232.           features  in  a  fraction  of  the   time  usually   required,  which
  1233.           contributes to reducing development costs considerably. 
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.           Chapter I, System Overview and Features                      page 19          Chapter I, System Overview and Features                      page 19
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1262.  
  1263.  
  1264.           The Screen Format Designer (SFD)          The Screen Format Designer (SFD)          ________________________________
  1265.  
  1266.  
  1267.           The purpose  of this  program is to assist you to design, specify and
  1268.           test all screen formats to be incorporated in an application program.
  1269.           These  formats  are  'built'  in  a straightforward but comprehensive
  1270.           approach using a full screen  editor  for  the  format  layout  and a
  1271.           series of pop-up menus to define field and global parameters. Finally
  1272.           under  each  single  format  name  are  stored  not   only  the  form
  1273.           description  layout  and  its  field  definitions but any information
  1274.           related to that format such as reference to help screens.
  1275.  
  1276.                        
  1277.           Key features of SFD include :          Key features of SFD include :
  1278.                        
  1279.  
  1280.           -    Easy to understand, Menu Driven Program with Windows.
  1281.           -    Online accessible, context sensitive Help facility. 
  1282.           -    Layout design with comfortable Full Screen editor.
  1283.           -    Full characterset access.
  1284.           -    Drawing of Boxes with the opportunity  to choose  any linestyles
  1285.                and automatic interconnections to other boxes.
  1286.           -    Powerful Block Copy and Delete functions.
  1287.           -    Outstanding     selection     of    display    attributes    and
  1288.                highlightfunctions, seperate for color and monochrome displays.
  1289.           -    A large range of pre-defined fieldtypes.
  1290.           -    Input validation selectable for any field.
  1291.           -    Up to 50 fields per format.
  1292.           -    Option  to  define  and  link  'Help'   formats  and  assistance
  1293.                messages to any single field.
  1294.           -    Unrestricted formats size up to 80 x 25.
  1295.           -    Number of formats per program only limited by disk space.
  1296.           -    Transfer of formats between different format files.
  1297.           -    Printing of format lists and hard copies.
  1298.           -    Complete inbuilt test facility for new formats.
  1299.           -    Dynamic alteration  of format  specs. and attributes during test
  1300.                with results immediately being visible.
  1301.           -    Full support of MSDOS 2+ Subdirectory structure.
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.           Chapter I, System Overview and Features                      page 20          Chapter I, System Overview and Features                      page 20
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1328.  
  1329.  
  1330.           The Screen Control Language (SCL)          The Screen Control Language (SCL)          _________________________________
  1331.  
  1332.  
  1333.           SCL is an extensive set of  routines to  access SFD  generated format          SCL                                             SFD
  1334.           files  and  to  perform  all  screen related functions within a Turbo
  1335.           Pascal program.
  1336.  
  1337.  
  1338.           The main features of SCL are:          The main features of SCL are:
  1339.  
  1340.  
  1341.           -    Powerful  command  syntax  (Processing  of  a   complete  format
  1342.                including  input  check  and  error  handling  with  only  three
  1343.                statements).
  1344.           -    Automatic control of display and overlay of formats. 
  1345.           -    Easy and comfortable access to fields.
  1346.           -    Support of windows including stacking to any desired depth, only
  1347.                limited by the amount of memory available.
  1348.           -    Handling of menus, even multiple menus and/or together with data
  1349.                input fields on one format. 
  1350.           -    Full control of display attributes and formatting of fields.
  1351.           -    Automatic input validity checks and display of error messages.
  1352.           -    No requirement to declare field variables etc. in your program.
  1353.           -    User programmed checks or  other interferences  possible anytime
  1354.                made simple and safe.
  1355.           -    Capability to monitor and flag user selectable keyboard keys and
  1356.                other events.
  1357.           -    Changes to Formats,  Messages  and  Input  check  parameters are
  1358.                possible without recompiling the program.
  1359.           -    Highly  improved   conciseness  and  ease  of  understanding  of
  1360.                finished programs.
  1361.           -    Comprehensive library of procedures and functions  to facilitate
  1362.                date/time processing,  access to DOS functions, string handling,
  1363.                (data communication with full reease) and much more. 
  1364.           -    Support of execution of other  programs  and  even  DOS commands
  1365.                from within an application.
  1366.           -    Support of background processing tasks (datacom, printing etc). 
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.           Chapter I, System Overview and Features                      page 21          Chapter I, System Overview and Features                      page 21
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1394.  
  1395.  
  1396.           Application programs written with OASIS.          Application programs written with OASIS.          ________________________________________
  1397.                        
  1398.                        
  1399.                        
  1400.                        
  1401.                        
  1402.           The use  of OASIS results in very ergonomic application programs with          The use  of OASIS
  1403.           outstanding  handling  capabilities  and  many  userfriendly features
  1404.           like:
  1405.  
  1406.  
  1407.           -    Automatic display of assisting messages for each single field.
  1408.  
  1409.           -    Extensive   Online   Help   System  with  four  different,  user
  1410.                selectable levels.
  1411.  
  1412.           -    Automatic Input error handling and display of error messages.
  1413.  
  1414.           -    Adaptability to different systems/keyboard layouts.
  1415.  
  1416.           -    Simple and straightforward Nationalisation and Customisation.
  1417.  
  1418.           -    Full Support for both Color and Monochrome displays. 
  1419.  
  1420.           -    Undo function.
  1421.  
  1422.           -    Abort function.
  1423.  
  1424.           -    Mouse support very simple to accomplish.
  1425.  
  1426.           -    Interrupt driven Data Communications Handling
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.           Chapter I, System Overview and Features                      page 22          Chapter I, System Overview and Features                      page 22
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1460.  
  1461.  
  1462.                                Some Feature Explanations.                               Some Feature Explanations.                               __________________________                       
  1463.                        
  1464.                        
  1465.                             Screen Related Program Parameters                            Screen Related Program Parameters
  1466.  
  1467.  
  1468.           In OASIS written application programs most  screen related parameters             OASIS
  1469.           are  stored   in  data   files.  This  includes  the  format  layouts
  1470.           themselves, the field details,  error messages,  help and explanatory
  1471.           information,   field   input   check/validation  parameters,  colors,
  1472.           attributes and much more.
  1473.           All these parameters can be altered anytime using SFD.                                                            SFD
  1474.  
  1475.  
  1476.           This presents several advantages:
  1477.  
  1478.           1.   Program changes are often possible without recompiling. 
  1479.  
  1480.           2.   Nationalisation and  customisation of  programs, otherwise often
  1481.                very tedious and time consuming tasks become effortless and easy
  1482.                to accomplish. 
  1483.  
  1484.           3.   The program sources are more compact,  easier to  understand and
  1485.                do compile faster.
  1486.  
  1487.  
  1488.  
  1489.                               Colors and Display Attributes                              Colors and Display Attributes
  1490.  
  1491.  
  1492.           OASIS  written  applications  automatically  recognize  the  type  of          OASIS
  1493.           display adapter and therefore utilize the suitable screen attributes.
  1494.           For optimum  result, two  totally independent  sets of attributes are
  1495.           provided for  each format/field,  one for  color graphic  and one for
  1496.           monochrome display adapters.
  1497.  
  1498.           Note:  OASIS works in 80 column modes only.           Note:
  1499.  
  1500.  
  1501.  
  1502.                               Non Standard Keyboard Layouts                              Non Standard Keyboard Layouts
  1503.  
  1504.  
  1505.           SCL  written  applications  can  easily  be  adapted  to non standard          SCL
  1506.           Keyboards. The Codes of all relevant keys are stored as constants and
  1507.           can be adapted as required.
  1508.  
  1509.  
  1510.  
  1511.  
  1512.           Chapter I, System Overview and Features                      page 23          Chapter I, System Overview and Features                      page 23
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1526.  
  1527.  
  1528.           Program development with OASIS          Program development with OASIS          ______________________________
  1529.  
  1530.           It is made up of two distinct phases. 
  1531.  
  1532.  
  1533.  
  1534.           A. Declarative Phase          A. Declarative Phase
  1535.  
  1536.  
  1537.           This  Phase  is  completely  performed  using SFD. It consists of the                                                        SFD
  1538.           following steps:
  1539.  
  1540.           1.   Define all screen formats and fields required. 
  1541.            
  1542.           For each Format do the following:
  1543.  
  1544.  
  1545.           2.   Using the  screen editor,  design its  layout including location
  1546.                and size of all required fields.
  1547.  
  1548.           3.   Using pop-up  menus then  specify the  appearance of the format,
  1549.                define whether special  checks  are  required  or  not  for this
  1550.                format and  establish if  and when other external actions are to
  1551.                be performed.
  1552.  
  1553.           4.   Always using pop-up  menus  determine  if  and  in  which fields
  1554.                error and explanatory messages are to be displayed.
  1555.            
  1556.           5.   Again  using  pop-up  menus  specify  for  each field, the type 
  1557.                (Variable, Constant, Output) and  define  its  parameters   like
  1558.                special appearance,  attributes, formatting,  necessary  checks,
  1559.                explanatory message,inter field dependencies and so  on.
  1560.  
  1561.           6.   Finally test the  format  using  the  SFD  test  facilities. The                                                     SFD
  1562.                format  behaves  just  as  if  it was already integrated in your
  1563.                program.  You   can   therefore   safely   test   input  checks,
  1564.                formatting,  help  system  and  many  other things. You may find
  1565.                that you are  not  satisfied  with  one  or  another  detail. No
  1566.                problem,  you  can  do  most  changes  right  away, without even
  1567.                leaving the test. The  results will  be immediately  visible  to
  1568.                you. Only  for some  major changes  like basic  layout or  field
  1569.                types you would have to go back to the Design  facility. 
  1570.  
  1571.           7.   Once you are pleased with your  format,  you  can  assign  help 
  1572.                screens to  it (this  can be  done anytime later on). There  are
  1573.                many different possibilities for the help system, please    look
  1574.                under "The OASIS Help System" for details.                     "The OASIS Help System"
  1575.  
  1576.  
  1577.  
  1578.           Chapter I, System Overview and Features                      page 24          Chapter I, System Overview and Features                      page 24
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1592.  
  1593.  
  1594.  
  1595.           B. Procedural Phase          B. Procedural Phase
  1596.  
  1597.  
  1598.           1.   Now the  time has  come to  actually begin programming using SCL                                                                            SCL
  1599.                constructs.
  1600.                The first approach is  to build  some sort  of skeleton program,
  1601.                containing all  switching logic between different formats and so
  1602.                forth.
  1603.  
  1604.           2.   You then compile this skeleton  and  experiment  with  the basic
  1605.                logic  to  assess  its  functionality  and see if it is what you
  1606.                wanted initially. By now, you will  have an  exact idea  how the
  1607.                final  program  will  look  like  and  you  already  have spared
  1608.                yourself precious time since you will require a lot less testing
  1609.                and changes later on.
  1610.  
  1611.           3.   You complete  your program  by adding all the missing logic into
  1612.                the skeleton. 
  1613.  
  1614.           4.   You perform the final testing and fine tuning as required.
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.           Chapter I, System Overview and Features                      page 25          Chapter I, System Overview and Features                      page 25
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1658.  
  1659.  
  1660.                      Differences to traditional program development                     Differences to traditional program development                     ______________________________________________
  1661.  
  1662.  
  1663.           What instead of how          What instead of how
  1664.           Obviously  the  first  difference  with  conventional  user interface
  1665.           approach is  that you  do not have to specify how your formats are to
  1666.           be built. As a matter of  fact  this  is  the  essence  of  the OASIS
  1667.           concept.  All  you  have  to  do  is draw them and tell SFD what they
  1668.           should look like. It is no longer neccessary  to write  procedures to
  1669.           check or to format the fields content. 
  1670.           As a  general rule,  just declare  what should be done, not how to do                                             ____                     ___
  1671.           it.
  1672.  
  1673.  
  1674.           Early Tests          Early Tests
  1675.           Most of the necessary test work  can be  performed at  quite an early
  1676.           stage of the program development, ensuring that conceptual errors are
  1677.           detected early enough to  take corrective  actions before  things get
  1678.           out of control.
  1679.  
  1680.  
  1681.           Less Programming          Less Programming
  1682.           Another strength  resides in the fact that much of the programming is
  1683.           already done before you even start to generate a program source. Once
  1684.           you really  start programming,  you will  realize that SCL constructs                                                                 SCL
  1685.           allow you to remain in the declarative mode. Since you  don't have to                                     declarative
  1686.           develop  procedures,  you  can  concentrate on more global aspects of
  1687.           your program and, as a side effect, you'll save a considerable amount
  1688.           of time. 
  1689.  
  1690.  
  1691.           Easier changes          Easier changes
  1692.           During program  development a  lot of  changes have to be made to the
  1693.           program. Even once a  program is  finished, you  usually never really
  1694.           stop changing  it. For programs written with OASIS this becomes a lot                                                       OASIS
  1695.           easier. If the changes are in the screen  interface, you  can usually
  1696.           perform them  via SFD  without even  recompiling the program. Even if                            SFD
  1697.           this is not the case, it  becomes  a  lot  easier  to  do  since your
  1698.           program source is much more concise and thus more intelligible. 
  1699.  
  1700.  
  1701.           Nationalization, customization made simple          Nationalization, customization made simple
  1702.           All screen formats and all program messages are stored in data files,
  1703.           easily accessible with SFD. Customisation of  screens and/or messages                                 SFD
  1704.           or even  translation of  a whole  program into other languages become
  1705.           mondaine tasks, without even recompiling the program.
  1706.  
  1707.  
  1708.  
  1709.  
  1710.           Chapter I, System Overview and Features                      page 26          Chapter I, System Overview and Features                      page 26
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1724.  
  1725.  
  1726.                               System Installation and Setup                              System Installation and Setup                              _____________________________
  1727.  
  1728.  
  1729.  
  1730.           The Distribution Disks          The Distribution Disks
  1731.                        
  1732.                        
  1733.                        
  1734.           On the OASIS Distribution disks you'll find the following files:              On the OASIS Distribution disks you'll find the following files:   
  1735.  
  1736.           READ.ME        Textfile containing last minute information.
  1737.  
  1738.           SCL.TPU        Turbo Pascal 4.0 Unit  file containing  all Screen                                                                         Screen    
  1739.                          Control Language  (SCL) Routines and definitions.                              Control Language
  1740.                          In order to access SCL you must include 'SCL' in      
  1741.                          your 'USES' statement.
  1742.  
  1743.           SCL.DOC        Source of the 'Interface' Part of SCL.TPU.
  1744.  
  1745.           SFD.EXE        Screen Format Designer Program.
  1746.  
  1747.           SFD.ERR        Text file containing error messages for SFD.EXE.
  1748.  
  1749.           SFD.MSG        Data file  containing explanatory program messages    
  1750.                          for SFD.EXE.
  1751.  
  1752.           SFD.FOR        Screenfile for SFD.EXE.
  1753.  
  1754.           SFD.FIN        Screen index file.
  1755.  
  1756.           SCL.ERR        Optional (Error-) Message file to be used for your    
  1757.                          programs. You can add your own messages as required.
  1758.  
  1759.  
  1760.           SAMPLExS       Turbo Pascal program examples to demonstrate SCL.
  1761.  
  1762.           SAMPLEx.EXE    Compiled versions of the above. 
  1763.  
  1764.           SAMPLEx.SCS    Screenfiles to above.
  1765.  
  1766.           SAMPLEx.SCI    Indexfiles to above.
  1767.  
  1768.           SAMPLEx.MSG    Message files to above.
  1769.  
  1770.           SAMPLEx.ERR    Error messages to above.
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.           Chapter I, System Overview and Features                      page 27          Chapter I, System Overview and Features                      page 27
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1790.  
  1791.  
  1792.  
  1793.  
  1794.                                    System Requirements                                   System Requirements
  1795.  
  1796.  
  1797.                                 IBM PC or compatible
  1798.                                  
  1799.                                 256 KB Memory minimum
  1800.  
  1801.                                 Hard disk *)
  1802.  
  1803.                                 PC DOS/MS-DOS 2.0 or later
  1804.  
  1805.                                 Turbo Pascal 4.0 or later
  1806.  
  1807.  
  1808.                
  1809.  
  1810.           *)  Note:              Note
  1811.            
  1812.           The Screen  Format Designer  program requires a hard disk in order to              Screen  Format Designer
  1813.           run.
  1814.  
  1815.           Other typical Application  Programs  build  with  OASIS  normally run                                                            OASIS
  1816.           happily on a floppy system.
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.           See Appendix A for Details on System Resource Considerations.            See Appendix A for Details on System Resource Considerations.
  1823.  
  1824.  
  1825.            
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.           Chapter I, System Overview and Features                      page 28          Chapter I, System Overview and Features                      page 28
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1856.  
  1857.  
  1858.  
  1859.  
  1860.                                 Installation Instructions                                Installation Instructions                                _________________________                       
  1861.  
  1862.  
  1863.  
  1864.           There is  no special  Installation procedure necessary since OASIS is
  1865.           not copy protected.
  1866.           Just create a subdirectory on your hard disk and copy  the content of
  1867.           both distribution disks to it.
  1868.  
  1869.  
  1870.           Now add to your CONFIG.SYS file the following two statements:
  1871.  
  1872.             FILES=16            FILES=16
  1873.             BUFFERS=32            BUFFERS=32
  1874.  
  1875.  
  1876.           If  your  configuration  file  should  already  contain  a "FILES=nn"
  1877.           statement, then you just increase the number to at least 16; if it is
  1878.           already bigger, leave it as it is.
  1879.           The same applies to the "BUFFER=nn" Statement.
  1880.  
  1881.           This completes the installation.
  1882.  
  1883.           To start the Screen Design Program just go to the subdirectory you've
  1884.           loaded the  distribution disks  to (using  the DOS  Command "CD") and
  1885.           enter SFD<Return>.                SFD
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.           Chapter I, System Overview and Features                      page 29          Chapter I, System Overview and Features                      page 29
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931.  
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.                                        Chapter II                                       Chapter II
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.           Chapter II,  SFD getting started                             page 31          Chapter II,  SFD getting started                             page 31
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2054.  
  2055.  
  2056.  
  2057.  
  2058.  
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.                                The Screen Format Designer                               The Screen Format Designer                       
  2075.                                               
  2076.                                         ( S F D )                                        ( S F D )                       
  2077.                                               
  2078.                                      Getting Started                                     Getting Started                       
  2079.                                               
  2080.                                               
  2081.                                    (A Short Tutorial)                                   (A Short Tutorial)
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.           Chapter II,  SFD getting started                             page 32          Chapter II,  SFD getting started                             page 32
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2120.  
  2121.  
  2122.                             Explanation of keyboard functions                            Explanation of keyboard functions                       
  2123.                        
  2124.  
  2125.           At  first  you  will  probably find the following explanations rather
  2126.           complicated and confusing, but  upon trying  you will  soon find that
  2127.           everything does  function in  a very  intuitive way and you will very
  2128.           quickly get familiar with it. Much care has been taken  regarding the
  2129.           way  the  different  functions  are  layed  out  to  achieve  ease of
  2130.           operation and a maximum of ergonomy.
  2131.  
  2132.  
  2133.  
  2134.           Variables and Constants          Variables and Constants
  2135.  
  2136.           Variables and Constants are the two main categories of format fields.
  2137.           Whenever you happen to see the cusor, either as a  blinking underline
  2138.           character or as a big block (which may or may not blink) you are in a
  2139.           Variable field and you are expected to enter some data.          Variable
  2140.  
  2141.           If the cursor is not visible you are in a  Constant field.  You can't                                                     Constant
  2142.           enter  any  data  into  Constants,  all  you  can  do is to select or
  2143.           deselect them by pressing Return  or  Enter.  A  typical  example for                                    Return      Enter.
  2144.           Constant fields  is a  Menu. You  just select one (in some cases more          Constant
  2145.           than one) possibility out of a choice being presented to you.
  2146.            
  2147.  
  2148.  
  2149.  
  2150.           The keys to travel between fields and their functions are as follows:          The keys to travel between fields and their functions are as follows:
  2151.  
  2152.  
  2153.                Right     : Next Field.
  2154.                Left      : Previous Field.
  2155.                Down      : First field on next line.
  2156.                Up        : Last field on previous line.
  2157.                Home      : First field in line.
  2158.                End       : Last field in line.
  2159.                PgDn      : Last field on format.
  2160.                PgUp      : First field on format.
  2161.                Tab       : Next field.*)
  2162.                ShiftTab  : Previous field.*)
  2163.  
  2164.  
  2165.           Note:             Note:   
  2166.           *)  Tab and Right respectively ShiftTab and  Left are  not identical.
  2167.           See next paragraph.
  2168.  
  2169.  
  2170.  
  2171.  
  2172.           Chapter II,  SFD getting started                             page 33          Chapter II,  SFD getting started                             page 33
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2186.  
  2187.  
  2188.           Variable field specials          Variable field specials
  2189.  
  2190.           Upon  approaching  a  Variable  field you will realize several things
  2191.           happening.
  2192.  
  2193.  
  2194.           1.   The present content of the field  (if  there  is  any)  is being
  2195.                shifted to the left, no matter how it was formatted before. this
  2196.                is done in order to facilitate the entry or change of data.
  2197.  
  2198.           2.   In some cases, the part of the field not yet  containing data is
  2199.                flushed with  Fill characters  (usually dots) or the whole field                             Fill
  2200.                is being underlined. Whichever the  case,  the  intention  is to
  2201.                give you an indication of the length of the field, i.e. how much
  2202.                space is left for data input.
  2203.  
  2204.           3.   The Cursor is visible in form of a blinking Underline character.
  2205.  
  2206.  
  2207.  
  2208.           Once you start entering data, the  shape of  the cursor  changes to a
  2209.           big block which may or may not blink. This indicates that you are now
  2210.           in Entry mode and that the left and  right arrows  have changed their             Entry
  2211.           meaning. Now Right advances you one character position and Left moves                       Right                                         Left
  2212.           you to the previous character. Note that Tab and ShiftTab  keep their                                                   Tab     ShiftTab
  2213.           original functions.  If you  press Right  while already  being in the                                             Right
  2214.           rightmost position of the field or if you  press Left  while being at                                                           Left
  2215.           the first character of the field you will be notified by a Beep.                                                                     Beep.
  2216.  
  2217.           Besides just  entering data,  there is  an alternate method to change
  2218.           from Travel to Entry mode : Pressing Return. This is especially handy               Travel    Entry                 Return
  2219.           in cases  where you  want to  change already existing data in a field
  2220.           and you need to  advance  to  the  appropriate  character position(s)
  2221.           using the arrows.                    arrows
  2222.  
  2223.  
  2224.           Editing keys           Editing keys
  2225.  
  2226.                Backspace : Deletes character left of cursor.
  2227.                Insert    : Inserts a space at cursor position.
  2228.                Delete    : Deletes character under cursor.
  2229.  
  2230.  
  2231.           Note:    Entering  data  into  the  rightmost  position of a Variable          Note:                                                        Variable
  2232.           automatically advances you to the next field.
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.           Chapter II,  SFD getting started                             page 34          Chapter II,  SFD getting started                             page 34
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2252.  
  2253.  
  2254.           Return          Return
  2255.  
  2256.           As previously mentioned, pressing  Return while  in a  Variable field                                             Return              Variable
  2257.           puts you into Entry Mode.  Once you are in Entry mode pressing Return                        Entry                        Entry               Return
  2258.           finishes this field an advances you to to  the next  one or,  if this
  2259.           field was the last one, terminates the format.
  2260.           The resulting  effect on  the field  content varies depending on your
  2261.           position within the field.
  2262.           If you were in the first position, the  entire current  field content
  2263.           is captured.  For all  other positions  only the portion of the field
  2264.           left of the cursor is recognized.
  2265.  
  2266.           While in a Constant field, pressing Return toggles the status  of the                     Constant                 Return
  2267.           field from  not selected  to selected and vice versa. The cursor will                      not selected     selected
  2268.           automatically be advanced to the next field. In case you  are already
  2269.           in the last field the format will be terminatedn 
  2270.           In some  cases, Constant fields can form a group, typically some kind                          Constant
  2271.           of a menu. In these cases  only one  field out  of that  group may be
  2272.           selected at  any given time. So, if you select a field other than the
  2273.           one presently already selected, the latter one will  automatically be
  2274.           deselected. If  a field of such a group has been selected, the cursor
  2275.           automatically advances to the  field immediately  following the group
  2276.           (in  case  there  is  none  left,  the  format  will be automatically
  2277.           terminated).
  2278.           Selecting an item out of a group of Constant fields may or may not be                                              Constant
  2279.           mandatory. In  case it  is, you  are not  allowed to deselect a field                                                               deselect
  2280.           (i.e. pressing Return in a field being presently  selected results in                         Return                             selected
  2281.           a Beep or an error message to be displayed).            Beep
  2282.           In such  cases, deselecting  a field is automatically done as soon as                          deselecting
  2283.           you select another field. This is very much the same  as on  a TV-Set              select
  2284.           where you deselect a channel by just choosing another one. 
  2285.  
  2286.  
  2287.  
  2288.           Escape          Escape
  2289.  
  2290.           Escape can  be used  to tell  the program independently of the cursor
  2291.           position that you are finished with the present  format and  you want
  2292.           to exit it. 
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.           Chapter II,  SFD getting started                             page 35          Chapter II,  SFD getting started                             page 35
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2318.  
  2319.  
  2320.           Function keys          Function keys
  2321.  
  2322.  
  2323.           F1          F1
  2324.  
  2325.           Pressing  F1   displays  General   Help  Informations  including  key                    F1
  2326.           functions etc.
  2327.  
  2328.  
  2329.           F2          F2
  2330.  
  2331.           F2 displays specific Informations relative to what you  are presently
  2332.           doing. Please note that F2 help is not available for every format. In                                  F2 help
  2333.           such cases, if you press F2 you will just hear a beep.                                   F2                      beep.
  2334.                        
  2335.  
  2336.           F3          F3
  2337.  
  2338.           The UNDO key. Pressing F3 will  restore the  content of  your present                                 F3
  2339.           field to  whatever it  was before you changed it; i.e. will UNDO your
  2340.           changes. Note that UNDO only applies to Variable fields.                                                  Variable
  2341.  
  2342.  
  2343.           F10          F10
  2344.  
  2345.           The ABORT key. Pressing  F10  tells  the  program  that  you  want to                                   F10
  2346.           unconditionally abort  your present  operation. Any data you may have
  2347.           entered on your present format will be lost.  For this  reason, Abort                                                                          Abort
  2348.           is only available with a few formats. 
  2349.           Formats where  Abort is not available can typically only be exited by                         Abort
  2350.           hitting the Escape key while the data fields are empty.                       Escape
  2351.  
  2352.  
  2353.  
  2354.           Other (local) functions          Other (local) functions
  2355.  
  2356.           On some formats there may be further functions available. Pressing F1                                                                             F1
  2357.           (Help) will always give you the appropriate details.
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.           Chapter II,  SFD getting started                             page 36          Chapter II,  SFD getting started                             page 36
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2384.  
  2385.  
  2386.                              Errors & Automatic Help System                             Errors & Automatic Help System                             ______________________________                       
  2387.                        
  2388.                        
  2389.                        
  2390.           Invalid data entry          Invalid data entry
  2391.            
  2392.           Whenever you try to enter invalid data you will be notified by a Beep                                                                           Beep
  2393.           and,  in  some  cases,  a  system  generated  error  message  may  be
  2394.           displayedn
  2395.  
  2396.  
  2397.  
  2398.           Missing mandatory data          Missing mandatory data
  2399.  
  2400.           If you  attempt to  exit a format before having entered all mandatory
  2401.           fields, the program will notify you in the same way as in the case of
  2402.           invalid  data.   In  addition,   the  cursor  will  automatically  be
  2403.           positioned into the field where data is missing.
  2404.  
  2405.  
  2406.  
  2407.           Autohelp feature           Autohelp feature
  2408.  
  2409.           If you make a certain number of consecutive  input errors  (Default =
  2410.           3) the  program will automatically come up with information where and
  2411.           how to obtain help.
  2412.  
  2413.  
  2414.  
  2415.  
  2416.           Note:  You can change nearly all Help system Parameters  according to          Note:  
  2417.           your requirements.
  2418.           See under 'System Defaults' for details.
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.           Chapter II,  SFD getting started                             page 37          Chapter II,  SFD getting started                             page 37
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2450.  
  2451.  
  2452.                                       Design Cycle                                      Design Cycle                                      ____________
  2453.  
  2454.  
  2455.           To  make  you  familiar  with  the  operation  of  SFD we will now go
  2456.           together through the complete cycle of design and  specification of a
  2457.           format. 
  2458.           During this  exercise we  will also  look at some of the features the
  2459.           program offers. Once we are done  with the  design of  your format we
  2460.           will test it using SFD's own test facility.
  2461.                        
  2462.           Those already  familiar with the basic operation of SFD can skip this          Those already  familiar with the basic operation of SFD can skip this
  2463.           part of the manual.          part of the manual.
  2464.  
  2465.  
  2466.           Start the program by  entering SFD<Return>  (Make sure  to be  in the                                         SFD
  2467.           right directory).
  2468.  
  2469.           After a  short moment  you will  be presented  with the programs main
  2470.           menu.
  2471.  
  2472.           It is divided into three parts.
  2473.           The header shows the  program  name,  version  etc  as  well  as some
  2474.           informations about  the directory you have selected, the workfile and
  2475.           the number of formats in it.
  2476.           Since you have just started up the program  the following information
  2477.           should be displayed. 
  2478.  
  2479.                Act dir      : <The currently active drive and directory>. 
  2480.                Workfile     : <None>.
  2481.                Nr of Formats: 0.
  2482.  
  2483.           The middle  part of  the menu  is occupied by a number of menu items,
  2484.           subdivided into seven groups.
  2485.           Presently, the first item (Layout) of the first group (Design) should
  2486.           be highlighted.
  2487.  
  2488.           The last  line of  the menu  is called  Message Line  and gives you a                                                  Message Line
  2489.           brief explanation of the highlighted item.
  2490.  
  2491.           If you press F1 (just do it  !)  a  screen  informing  you  about the                       F1
  2492.           meaning of keys etc will appear.
  2493.           To leave the Help format press either Return or Escape.                                                Return    Escape.
  2494.  
  2495.           F2 will  give you a bit more detailed Information about the presently          F2
  2496.           highlighted group of items on the  menu.  Again,  to  leave  the help
  2497.           format you must press Return or Escape.                                Return    Escape.
  2498.  
  2499.           You can use F1 on any format, F2 may not be available in some cases.                      F1                F2
  2500.  
  2501.  
  2502.           Chapter II,  SFD getting started                             page 38          Chapter II,  SFD getting started                             page 38
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2516.  
  2517.  
  2518.           You can  travel around on the menu using the appropriate keys. If you
  2519.           don't know which ones either look  in this  manual under  'Meaning of
  2520.           keys' or  press F5. While you are traveling around on the menu, watch                          F5
  2521.           the message line changing.
  2522.         | You may also want  to press  F2 while  being in  different fields and
  2523.           read the appropriate explanations. 
  2524.  
  2525.  
  2526.           Once you  are familiar with how to travel on a format, we can proceed
  2527.           to some 'real' work. 
  2528.  
  2529.         | Before we start I want to remind you of the two 'Help' keys F1 and F2
  2530.           During this  exercise it  is probably  a good  idea to  use them very
  2531.           frequently (Especially F2) and  read  the  information  they containn
  2532.         | Don't forget  that the help provided by F2 is context sensitive (i.e.
  2533.           the kind of  information  provided  may  change  depending  where you
  2534.           presently are on the format. 
  2535.           Should  you  require  further  detailed  informations,  then read the
  2536.           appropriate chapter later on in this manual. 
  2537.  
  2538.  
  2539.  
  2540.  
  2541.  
  2542.  
  2543.  
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.           Chapter II,  SFD getting started                             page 39          Chapter II,  SFD getting started                             page 39
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2582.  
  2583.  
  2584.                                 Designing a format layout                                Designing a format layout                                _________________________
  2585.  
  2586.  
  2587.            1.  Travel to the appropriate item (Layout).
  2588.  
  2589.            2.        |      Hit Return. This selects the item.
  2590.  
  2591.  
  2592.           Since you have not yet loaded a work  filel SFD  will come  up with a                                                      SFD
  2593.           tiny window asking you for a name.
  2594.           Enter a  name (without  extension since SFD uses its own extensions),                                                  SFD
  2595.         | say 'Myfile', and press Return.
  2596.  
  2597.  
  2598.           The window disappears again and a new one will come  up informing you
  2599.           that SFD  will ask  you whether  you want to create a new format. You               SFD
  2600.           say yes.
  2601.  
  2602.           Now you will be presented with the layout editor's worksheet (a fancy
  2603.           name for an empty screen, isn't it ?).
  2604.  
  2605.           It's  size  defaults  to  25  lines  with  80 characters each (a full
  2606.           screen).
  2607.  
  2608.           In order to familiarize you with the different features, you should        |                             now read both the F1 and F2 help formats.
  2609.  
  2610.         | You probably have already noticed some additional functions  on F4 to
  2611.         | F9 During our little exercise we will try out most of them.
  2612.  
  2613.           However  we  should  first  talk  about  the  other keys. Some have a
  2614.           slightly different meaning as on a normal format.
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620.  
  2621.  
  2622.  
  2623.  
  2624.  
  2625.  
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.           Chapter II,  SFD getting started                             page 40          Chapter II,  SFD getting started                             page 40
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2648.  
  2649.  
  2650.                             Layout editor  -  Meaning of keys                            Layout editor  -  Meaning of keys
  2651.  
  2652.  
  2653.         | Backspace, Insert and Delete  have the  same meaning  as under normal
  2654.           operation.
  2655.  
  2656.  
  2657.  
  2658.         | Home      moves  the cursor to the upper left  corner  of  your 
  2659.                     worksheet. 
  2660.  
  2661.         | End       moves  the cursor to the first position on the  last 
  2662.                     line.
  2663.  
  2664.         | PgUp      deletes the line under the cursor.
  2665.  
  2666.         | PgDn      inserts a line.
  2667.  
  2668.         | Return    moves the cursor to the first character of  the  next 
  2669.                     line.
  2670.  
  2671.  
  2672.  
  2673.         | The Arrow  keys allow you to move freely on the format. Note that the
  2674.         | Arrows are working in wrap-around mode. This means that:
  2675.  
  2676.         | If you press Right while being in the rightmost position  you will be
  2677.           moved to the first position of the next line. 
  2678.  
  2679.         | If you  press Left  while being  in the  first position of a line you
  2680.           will be moved to the last position of the previous line.
  2681.  
  2682.           Right while being in the lower  right corner  moves you  to the upper
  2683.         | left corner; the opposite happens if you then press Left.
  2684.  
  2685.         | Pressing Up  while being in the first line moves you to the last line
  2686.         | and the opposite happens with Down while in the last line.
  2687.  
  2688.  
  2689.  
  2690.           Before starting to draw  a format  we will  learn how  to specify its
  2691.           size. (The  size can  actually be  changed anytime  during the layout
  2692.           design). 
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.           Chapter II,  SFD getting started                             page 41          Chapter II,  SFD getting started                             page 41
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2714.  
  2715.  
  2716.                                 Changing the Format Size                                Changing the Format Size                       
  2717.  
  2718.  
  2719.         | Press F9. This will display the editors local menu. Select  the first
  2720.           item (Change  format size).  A new  window comes  up with the present
  2721.           settings. Just enter  new  values,  let's  assume  15  lines  with 40
  2722.           characters each. That's it. 
  2723.           You'll now  see that  the unused portion of the screen is filled with
  2724.           tiny dots. This is done to give you an idea of your drawing area.
  2725.           You will also realize that cursor  movement is  now confined  to this
  2726.           area. 
  2727.  
  2728.  
  2729.           Now we will start drawing a screen format.
  2730.  
  2731.  
  2732.  
  2733.  
  2734.  
  2735.  
  2736.  
  2737.  
  2738.  
  2739.  
  2740.  
  2741.  
  2742.  
  2743.  
  2744.  
  2745.  
  2746.  
  2747.  
  2748.  
  2749.  
  2750.  
  2751.  
  2752.  
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.           Chapter II,  SFD getting started                             page 42          Chapter II,  SFD getting started                             page 42
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2780.  
  2781.  
  2782.                                      Drawing fields                                     Drawing fields
  2783.  
  2784.  
  2785.           In our  exercise we  will build a format for a rather trivial program
  2786.           to print address labels.
  2787.  
  2788.           While drawing it make sure that you don't put any text into the first
  2789.           character position  on any line because we will need this space later
  2790.           on.
  2791.  
  2792.           First go to the second line and give the format a header  of your own
  2793.         | choice. Once  you have  written it  go to  column 1  and press Insert
  2794.           until it is approximately in the  center. (If  you have  moved it too
  2795.         | far, use Delete)
  2796.  
  2797.           Now go to line 4 and enter the following: [Mr][Mrs][Miss]
  2798.  
  2799.           The open square bracket means 'Begin of field', the closed means 'End
  2800.           of field'. In your example, the first character position of the first
  2801.           field is  the 'M', the last is the 'r'. the field has a length of two
  2802.           characters.
  2803.  
  2804.           Now  complete  your  format  according  to  the  drawing  below. Move
  2805.           everything that  it looks  nice. The exact length and position of the
  2806.           fields does not matter at the moment, just  check that  you have left
  2807.           line 1,  line 3, the line below 'City' and line 15 (the last) as well
  2808.           as the first and last column empty. We will need them in  a moment...
  2809.            
  2810.            
  2811.  
  2812.  
  2813.                       -Header-  
  2814.  
  2815.                       [Mr][Mrs][Miss]
  2816.  
  2817.            Name.......[                    ]
  2818.  
  2819.            Street.....[                    ]
  2820.            City.......[                    ]
  2821.  
  2822.                        Number of Labels[   ]
  2823.  
  2824.            Msg[                            ]                 
  2825.  
  2826.  
  2827.  
  2828.  
  2829.  
  2830.  
  2831.  
  2832.           Chapter II,  SFD getting started                             page 43          Chapter II,  SFD getting started                             page 43
  2833.  
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.  
  2845.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2846.  
  2847.  
  2848.                                       Drawing boxes                                      Drawing boxes
  2849.  
  2850.  
  2851.           Presently our  format doesn't  look too  appealing, does it ? We will
  2852.           correct this now by drawing boxes around the different parts.
  2853.           First we want to draw a frame around the complete format. We  need to
  2854.         | Mark two diagonal corners of the box we want to draw. Therefore we go
  2855.         | to line 1, Column 1 (Home) and press F5  (Mark). The mark is shown as
  2856.         | a small  rhombus. (By the way, an accidentally set Mark can easily be
  2857.         | removed by positioning the cursor over it and pressing F5 again).
  2858.         | To get to the other (lower right) corner we can now press Left twice.
  2859.         | Again F5 to mark it. 
  2860.         | Now press F8 (Draw Box). Observe !.                                   Observe !
  2861.  
  2862.  
  2863.  
  2864.         | Incidently,  key  F7  does  exactly  the  opposite of F8, i.e you can
  2865.         | undraw (delete) a box with it. 
  2866.  
  2867.  
  2868.           The box  drawing  feature  can  also  be  used  to  draw  vertical or
  2869.           horizontal lines. Just place the two marks in either the same line or
  2870.           the same column. 
  2871.  
  2872.  
  2873.           Apart from double lines as you have already seen, boxes  can be drawn
  2874.           in  all  kind  of  line  styles  which  ca  be seperately defined for
  2875.           horizontal and vertical  lines.  To  do  this,  go  by  the following
  2876.           instructions.
  2877.  
  2878.  
  2879.  
  2880.  
  2881.  
  2882.  
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.           Chapter II,  SFD getting started                             page 44          Chapter II,  SFD getting started                             page 44
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2912.  
  2913.  
  2914.                                   Selecting Linestyles                                  Selecting Linestyles
  2915.  
  2916.  
  2917.           We now want to seperate the different parts of the format. However we
  2918.           would rather like to  use single  lines instead  of double  lines. In
  2919.           order to  achieve this you go to the local menu (F9) again and select
  2920.           the second option (Box  Linestyles) by  highlighting it  and pressing
  2921.         | Return.
  2922.  
  2923.           The  small  triangles  you  see  on the format being presented to you
  2924.           specify the  currently selected  linestyles (Double  lines). Since we
  2925.           want  single  lines  for  horizontal,  highlight the second field and
  2926.         | press Return. The vertical lines we leave as  they are.  Once back on
  2927.         | your worksheet, go to Line 3, first column. Place a Mark.
  2928.         | Go to  the last  position of  the line below 'City'. Mark it as well.
  2929.           (Actually you could also have marked the other  two diagonal corners,
  2930.           i.e.  line  3,  last  column  and  the first column of the line below
  2931.           'City').
  2932.  
  2933.         | Press F8 to draw the box. As you can see, all necessary Junctions are
  2934.           done automatically. 
  2935.           (For your  information: This  applies not  only for 'T', but also for          (For your  information: This  applies not  only for 'T', but also for
  2936.           'X' junctions, whenever you use single or double lines).          'X' junctions, whenever you use single or double lines).
  2937.  
  2938.  
  2939.           By now, you should be reasonably satisfied with your format (don't be
  2940.           too fancy  after all,  it is  not that terribly sophisticated anyway)
  2941.           and we will proceed to specify its parameters. 
  2942.  
  2943.  
  2944.         | To leave the editor, press Escape.
  2945.  
  2946.           SFD will verify whether you really want to  leave the  editor, select          SFD
  2947.           'Yes'.
  2948.  
  2949.  
  2950.           Note:   The program  is now  checking your format. If for some reason          Note:
  2951.           you did  not properly  use the  brackets (Field  delimiters) a window
  2952.           will be  displayed informing  you of  the kind  of error you made. In
  2953.         | this case, hit Escape or Return to go back to the editor  and correct
  2954.           your piece  of art  before attempting  to leave it again as described
  2955.           above.
  2956.  
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964.           Chapter II,  SFD getting started                             page 45          Chapter II,  SFD getting started                             page 45
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  2978.  
  2979.  
  2980.                                   Field specifications                                  Field specifications
  2981.  
  2982.  
  2983.           Now you should  see  your  format  (the  field  delimiters  have been
  2984.           removed) and a small menu offering four different choices.
  2985.  
  2986.           We want to specify the fields of your format, so take the first one.
  2987.  
  2988.           The menu  vanishes and  you are back in your address label format. It
  2989.           now behaves like any other format you've seen so far. The first field
  2990.           is highlighted and you can travel around using the familiar keys.
  2991.  
  2992.           Before going  further we  should think a moment about your format and
  2993.           what it should look like.
  2994.  
  2995.           The first three  fields  (Mr,Mrs  and  Miss)  should  be  a  group of
  2996.           options. There  is no  data to be entered into these fields , we just
  2997.           want the user to select one (and only one) of the given options. Such
  2998.         | fields are  called Constants  in SFD. To make the selection exclusive                                           SFD
  2999.           (only one may be selected) we must declare  them as  a group.  And we
  3000.           also want the selection to be mandatory.
  3001.  
  3002.  
  3003.           To conclude.
  3004.  
  3005.            1.  We  want  fields  1  to  3  to  be  a  group of selectable items
  3006.                (Constants).
  3007.  
  3008.            2.  We want to declare them as mandatory.
  3009.  
  3010.  
  3011.           Now let's do it.
  3012.            
  3013.           Go to the first field (the 'Mr') and select it by pressing Return.
  3014.  
  3015.           A window will come up giving you several options to  preset the field
  3016.           specifications. At  present, your field is set to the default values,
  3017.           meaning it is assumed to be a variable,  any input  is allowed, there
  3018.           are no checks to be made and some more. 
  3019.  
  3020.           We don't  want to  preset it  to anything  else (all other fields are
  3021.           currently declared in the same way), so we choose 'None'.
  3022.           But we do want to change some of the specification details, so choose
  3023.           'Yes'.
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.           Chapter II,  SFD getting started                             page 46          Chapter II,  SFD getting started                             page 46
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3044.  
  3045.  
  3046.           Now the  Field specification  format comes  up. The 'Type' still says
  3047.         | Variable. We want to change  it  to  Constant.  Since  the  cursor is
  3048.         | already in the 'Type' field just press Return. A small menu will come
  3049.         | up. Choose 'Constant' and press Return again. That's it. 
  3050.           The next two fields show 'Group from 1 to 1'.  Change the  second '1'
  3051.         | to '3' and press Return.
  3052.         | Now you go to 'Mandatory' and hit Return to change it to 'Yes'.
  3053.  
  3054.           Note:   If you  want to know the meaning of the other specifications,          Note:
  3055.         | just make use of your mighty F2 Help key. 
  3056.  
  3057.  
  3058.  
  3059.  
  3060.           At  this  point  in  time  we  could  also  specify  the  colors  and
  3061.           attributes, but  for the  time being  we will leave them unaltered at
  3062.           their default values and come back to them later on in this exercise.
  3063.  
  3064.         | You can now press Escape to finish the format.
  3065.  
  3066.           Since we have specified that field 1 is the first of a  group ranging
  3067.           from field 1 to field 3, SFD automatically copies it's specifications                                   SFD
  3068.           to  the  remaining  fields  of  the  group.  There  are  however some
  3069.           specifications which  are not  copied: The  'message', the delimiters
  3070.         | and whether the field is Selected or not. 
  3071.           The next three fields (4 to 6) on your address label format are to be
  3072.         | used to  enter data,  in other  words, they are Variables. We want to
  3073.           make input to them mandatory.
  3074.  
  3075.           Call up the field specifications for the first  one (Field  Nr 4, the
  3076.           'Name' field).
  3077.  
  3078.           Go  to  the  'Fill'  field.  Enter a 'dot'. Into the 'Delimiter left'
  3079.           field put a colon. (The colon will be displayed at  the Position were
  3080.           you put your open square bracket when you designed the layout).   Set
  3081.           'Mandatory' to 'Yes'. Now leave the format.
  3082.  
  3083.           The next two fields on your format (street and city)  should look the
  3084.           same  as  the  'name'  field.  Consequently  you can use the 'Preset'
  3085.           function to copy the previous fields specs. As mentioned earlier, the
  3086.           'Delimiters' are not copied, so, if you want to have a colon in front
  3087.           of these fields as well,  you  must  specify  it  (otherwise  you can
  3088.           choose the 'Details No' Option).
  3089.  
  3090.  
  3091.  
  3092.  
  3093.  
  3094.  
  3095.  
  3096.           Chapter II,  SFD getting started                             page 47          Chapter II,  SFD getting started                             page 47
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3110.  
  3111.  
  3112.           There are two fields left on your format, 'Nr of Copies' and 'Msg'. 
  3113.  
  3114.           'Nr of  copies': Here  again you can copy the specs from the previous
  3115.           field. But go into the details as well since we want to  specify some
  3116.           input check parameters.
  3117.           First of all, we only want Integer numbers (there is nothing like 2.4
  3118.           labels). Hence go to the 'Inp.Check' field and press Return. Now make
  3119.           your choice.  We also  want to limit the Number of address labels one
  3120.           can obtain. We will assume a minimum of 1 and a maximum of 25 labels.
  3121.           Enter the appropriate values and finish the format.
  3122.  
  3123.           The  'Msg'  field  we  want  to  use  for error messages (If we don't
  3124.         | specify a field for them  we  would  just  hear  a  Beep  in  case of
  3125.           erroneous data input).
  3126.  
  3127.         | Specify the  type as  Output only  and also set 'Justify' to 'Center'
  3128.           (just to make the messages look nice).
  3129.           Leave the format.
  3130.  
  3131.         | Since we now have specified all fields in your format, press Escape.
  3132.  
  3133.           You are now back in the 'Change Format Specs' menu. 
  3134.  
  3135.  
  3136.  
  3137.  
  3138.  
  3139.  
  3140.  
  3141.  
  3142.  
  3143.  
  3144.  
  3145.  
  3146.  
  3147.  
  3148.  
  3149.  
  3150.  
  3151.  
  3152.  
  3153.  
  3154.  
  3155.  
  3156.  
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.           Chapter II,  SFD getting started                             page 48          Chapter II,  SFD getting started                             page 48
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3176.  
  3177.  
  3178.                               Format Control Specifications                              Format Control Specifications
  3179.  
  3180.            
  3181.           Select 'Format Control Specs'.
  3182.  
  3183.         | Once the format is diplayed you probably best press F2 first and read
  3184.           the infomations to get an idea.
  3185.  
  3186.           Now let's  begin. The first field we want to change is 'Error Message
  3187.           Field'. Enter the number of your 'Msg' field, 8.
  3188.  
  3189.           Actually, we are already finished with our specifications,  but let's
  3190.         | take   the   opportunity   to   talk  about  the  User  Function  Key
  3191.           specifications on the lower half of this format. 
  3192.  
  3193.  
  3194.  
  3195.  
  3196.                             User Function Key Specifications                            User Function Key Specifications
  3197.  
  3198.  
  3199.           The purpose of these specifications is to tell  SCL later  on in your                                                          SCL
  3200.           program when  to invoke special user written routines like additional
  3201.           checks, prefilling of fields and many other things.  By default, i.e.
  3202.           without the  need to  be specified, facilities are provided by SCL to                                                                         SCL
  3203.           optionally invoke user written  routines whenever  a format  field is
  3204.           entered, left or if the format is exited. 
  3205.           In  addition  to  this,  SCL  can be instructed to allow user written                                   SCL
  3206.           routines to take over control whenever  certain keys  are pressed. In
  3207.           order to allow this to happen, the appropriate keys must be specified
  3208.         | as User Functions.
  3209.  
  3210.           SFD lets you specify any of the ten  function keys  and, in addition,          SFD
  3211.         | up  to  ten  other  keys  to  serve as User Functions. ('Key' in this
  3212.           context can be any valid CNTRL or ALT key combination as well). 
  3213.  
  3214.           In addition to the here mentioned Interrupt specifications  which are
  3215.           valid  throughout  the  whole  format  there is one more which can be
  3216.           specified for each single field. You  may have  seen it  already when
  3217.           you did  the field  specifications. It  is called 'CharCheck' and, if
  3218.           set, can invoke a user written procedure at each single  keystroke if
  3219.           the cursor is in the appropriate field. 
  3220.           As you  probably can  imagine, the  possibilities offered by the User
  3221.           Interrupt System are enormous. Advice and examples on how to use them
  3222.           are provided in A[[endix A.  
  3223.           Further  informations  can  also  be  found  in  the SCL part of this                                                               SCL
  3224.           manual.
  3225.  
  3226.  
  3227.  
  3228.           Chapter II,  SFD getting started                             page 49          Chapter II,  SFD getting started                             page 49
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3242.  
  3243.  
  3244.           We have now completed the format specification (colors and attributes
  3245.         | will be discussed during the format test). Press Escape to go back to
  3246.           the little 'Specifications' Menu and select 'End'. 
  3247.  
  3248.           Your format is now written to  the format  file on  disk and  you are
  3249.           back in the Main Program Menu.
  3250.  
  3251.           If you  look at 'Nr of formats' in the header of the menu, you'll see
  3252.           '1', indicating that you have created your first format.
  3253.  
  3254.           If you want, you can print a hardcopy of it on your printer before we
  3255.           continue to test it and try out the Color/Attribute specifications.
  3256.  
  3257.           By  now  you  should  have  a  better  understanding of some of SFD's                                                                          SFD's
  3258.           features and I hope that you have enjoyed our exercise so far.
  3259.  
  3260.  
  3261.  
  3262.  
  3263.           When you are ready to continue, we will take a  look at  SFD's Format                                                                   SFD
  3264.           Test feature.
  3265.  
  3266.  
  3267.  
  3268.  
  3269.  
  3270.  
  3271.  
  3272.  
  3273.  
  3274.  
  3275.  
  3276.  
  3277.  
  3278.  
  3279.  
  3280.  
  3281.  
  3282.  
  3283.  
  3284.  
  3285.  
  3286.  
  3287.  
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.           Chapter II,  SFD getting started                             page 50          Chapter II,  SFD getting started                             page 50
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3308.  
  3309.  
  3310.                                     Testing a Format                                    Testing a Format                                    ________________
  3311.  
  3312.  
  3313.         | Select Design  Test/Modify on  the main menu. When asked for the name
  3314.           of the format you want to test, enter 'Myformat' or whatever name you
  3315.           called it.  If you  entered the wrong name, you will be notified by a
  3316.         | Beep.
  3317.           In this case, either correct  it  or,  if  you  don't  know  the name
  3318.         | anymore, press  F10 to  get back to the main menu and use the Display
  3319.         | Formats option to find out the right one.
  3320.           Anyway, as soon as you have  entered the  name of  your format, press
  3321.         | Return and it will be displayed.
  3322.           It now  behaves exactly  according to  your specifications. All input
  3323.           checks are being performed and if you enter something wrong or forget
  3324.           to enter  mandatory data you will be notified. Take yourself a couple
  3325.           of minutes to try  out all  kind of  things like  leave off mandatory
  3326.           data, try to enter invalid data etc and watch the results.
  3327.  
  3328.           Note:   Handling of  a format under 'Test' is a lot slower than later          Note:
  3329.           on in the program. This limitation  is imposed  by the  fact that all
  3330.           messages must  be read from a disk file as opposed to later on in the
  3331.           program where they are stored in memory.
  3332.  
  3333.           Now let us modify the way it looks.
  3334.  
  3335.         | To do this, you have to select the  local menu  (you know  how, don't
  3336.           you ?).
  3337.  
  3338.  
  3339.           This menu offers the following choices: 
  3340.  
  3341.           Change field specs/Active field          Change field specs/Active field
  3342.           Allows you  to change  the specifications  of the  field in which you
  3343.           currently are.
  3344.  
  3345.           Change field specs/Other field          Change field specs/Other field
  3346.           This option enables you to change any other field on  your format. It
  3347.           is particularly useful to change fields you can't get at (Output only
  3348.           fields).
  3349.  
  3350.           Global Colors/Attributes          Global Colors/Attributes
  3351.           This option allows you to change the colors/attributes  of all fields
  3352.           of a kind (all variables, all constants or all output only fields) on
  3353.           your format.
  3354.  
  3355.           Format/Control Specs          Format/Control Specs
  3356.           The same as you have seen already during layout design.
  3357.  
  3358.  
  3359.  
  3360.           Chapter II,  SFD getting started                             page 51          Chapter II,  SFD getting started                             page 51
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.  
  3373.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3374.  
  3375.  
  3376.                                     Colors/Attributes                                    Colors/Attributes                                    _________________
  3377.  
  3378.            
  3379.  
  3380.           You now select 'Global Colors/Attributes'.
  3381.  
  3382.  
  3383.           When asked for a field type, select 'Constant'.  This means  that you
  3384.           want to  change the  appearance of  all Constants  in your format. In
  3385.           your case these are the first three fields.
  3386.  
  3387.           Before starting to do any modification,  it is  important to describe
  3388.         | the meaning of Normal, Active and Selected fields.
  3389.  
  3390.         | What determines if a field is displayed in Normal or Active status is
  3391.           related to your position to this field, in  other words,  whether you
  3392.           are 'in it' or not; i.e. it becomes active if you go there.
  3393.         | Selected  is  mainly  utilized  for Constants (nevertheless it can be
  3394.           useful  with  other  fieldtypes  as  well  for  certain  effects, see
  3395.         | Appendix  A  under  'Advanced  Programming  Technics'). Selected is a
  3396.           boolean status proprietary to a field.  In  the  case  of  a Constant
  3397.           field it can be toggled by pressing Return while being in the field.
  3398.           To  express   the  above   states,  field  attributes,  seperate  for
  3399.           monochrome and color screens, can be choose as required. 
  3400.  
  3401.  
  3402.            
  3403.           Field Attributes          Field Attributes
  3404.            
  3405.           On monochrome displays, some of the field attributes like 'underline'
  3406.         | and 'Inverted'  are exclusive.  Since Selected can come together with
  3407.         | both Normal  and Active  field status,  it is  your responsibility to
  3408.           make  sure  that  the  attributes  don't  exclude  each  other. As an
  3409.         | example, if you would specify 'Selected' as being inverted and Active
  3410.           as being  underlined the appearance of the appropriate field wouldn't
  3411.           change whether  you were  in the  field or  not, it  would just being
  3412.           inverted in  both cases.  This could  be very  irritatating since you
  3413.           might not be able to recognize what field you were in. 
  3414.           In the case of 'Color' attributes the same is true for example if you
  3415.         | choose an 'intensified' color for selected and the 'Intens' attribute
  3416.         | for Active.
  3417.  
  3418.           If you have a monochrome adapter,  you can't  see the  results of any
  3419.           changes made  to the 'Color' attributes and vice versa. Nevertheless,
  3420.           you should at least read the appropriate chapters. Then try  out some
  3421.           combinations  of  attributes  matching  the  display  adapter you are
  3422.           using. 
  3423.  
  3424.  
  3425.  
  3426.           Chapter II,  SFD getting started                             page 52          Chapter II,  SFD getting started                             page 52
  3427.  
  3428.  
  3429.  
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  
  3437.  
  3438.  
  3439.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3440.  
  3441.  
  3442.           Color Screen Attributes          Color Screen Attributes
  3443.  
  3444.         | The Normal and Selected Choices are  pretty straightforward.  You can
  3445.           select  any  one  out  of  16  foreground colors and any one out of 8
  3446.           background colors for each one of the two.
  3447.           Keep in mind, that if you  use 'intensive'  forground colors  you may
  3448.         | get in conflict with the 'Intens' attribute for Active.
  3449.  
  3450.         | The choices you have for Active are:
  3451.  
  3452.  
  3453.           Invert :  The foreground  color becomes the background color and vice
  3454.                     versa.  Intensified  background  colors  are  not possible.
  3455.                     Therefore the  non intensified  equivalent is being used if
  3456.                     necessary.
  3457.  
  3458.           Blink  :  Self explanatory. The blink frequency can  be adjusted. See
  3459.                     under 'System Defaults'.
  3460.  
  3461.           Intens :  The foreground color is displayed intensified.
  3462.  
  3463.  
  3464.  
  3465.           Multiple choices of the above attributes are possible.           Multiple choices of the above attributes are possible.
  3466.  
  3467.  
  3468.  
  3469.         | Now let us specify a 'new look' for the Constants in our format.
  3470.  
  3471.  
  3472.           The foreground and background colors you see are modified as follows:
  3473.  
  3474.           Select the appropriate field.
  3475.           Choose your favourite from  the  selection  you  are  presented with.
  3476.           Simple, isn't it? 
  3477.  
  3478.         | The Active attributes can be set or reset by pressing the Return key.
  3479.  
  3480.           Once you  have made  your selection,  go back  to your format. If you
  3481.           have a Color Monitor you  will  instantly  see  the  results  of your
  3482.           modifications.
  3483.  
  3484.  
  3485.  
  3486.  
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.           Chapter II,  SFD getting started                             page 53          Chapter II,  SFD getting started                             page 53
  3493.  
  3494.  
  3495.  
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503.  
  3504.  
  3505.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3506.  
  3507.  
  3508.           Monochrome Attributes          Monochrome Attributes
  3509.  
  3510.  
  3511.           Norm      :    'White' text on black where 'White' means the color of
  3512.                          the screen you are using (usually green or amber).
  3513.  
  3514.           Intens    :    Same as 'Norm' but  brighter  Text.  Obviously, 'Norm'
  3515.                          and 'Intens' exclude each other.
  3516.                          If 'Intens'  is used  together with 'Invert' text just
  3517.                          appears to be 'thinner'.
  3518.  
  3519.           Invert    :    Black text on 'White' background.
  3520.  
  3521.           Underline :    Field   will    be    underlined.    'Underline'   and
  3522.                          'Invert'exclude  each  other.  In  this case, 'Invert'
  3523.                          takes precedence. 
  3524.  
  3525.           Marked    :    Directly  before  and  after  the  field   a  triangle
  3526.                          pointing  towards  the  field  will  be  displayed. If
  3527.         |                'Marked' is used as an Active  attribute the triangles
  3528.         |                will blink, if it is used as a Selected attribute they
  3529.                          are static. 
  3530.  
  3531.           Blink     :    The field content will blink. The  blink frequency can
  3532.                          be adjusted. See under 'System Defaults' for details.
  3533.  
  3534.  
  3535.           Multiple choices of above attributes are possible with the exceptions          Multiple choices of above attributes are possible with the exceptions
  3536.           mentioned.          mentioned.
  3537.  
  3538.           To set/reset monochrome attributes  just  travel  to  the appropriate
  3539.         | fields and press Return.
  3540.  
  3541.           Now make  your choices. Once you have finished go back to your format
  3542.           you will instantly see the Results of your modifications (at least if
  3543.           you are working on a monochrome monitor).
  3544.  
  3545.           To get  some exercise,  feel free  to venture  using other options as
  3546.           well. Maybe you even want to  change some  other specifications. Just
  3547.           do it and watch the results.
  3548.  
  3549.           Once you  are done  with the  exercises two  ways are offered to exit
  3550.           your format.
  3551.  
  3552.                1.         |           Fill it out completely and press Return
  3553.                     or
  3554.                2.   Hit the ABORT key.
  3555.  
  3556.  
  3557.  
  3558.           Chapter II,  SFD getting started                             page 54          Chapter II,  SFD getting started                             page 54
  3559.  
  3560.  
  3561.  
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3572.  
  3573.  
  3574.                                        Conclusion                                       Conclusion                                       __________
  3575.  
  3576.  
  3577.           The purpose of this exercise was to give you a brief overview  on the
  3578.           Screen  Format  Designer.  Only  a  small  part  of  the features was          Screen  Format  Designer
  3579.           touched, but you should  now have  enough knowledge  to continue your
  3580.           exploration  on  your  own,  using  the descriptions later on in this
  3581.           manual.
  3582.  
  3583.  
  3584.           If you should have encountered any  difficulties during  our exercise
  3585.           or did  not get along with the instructions given, I encourage you to
  3586.           just try it again and I am sure you will succeed this time.
  3587.  
  3588.  
  3589.           Anyway, as long as you are  not completely  familiar with  the system
  3590.         | you are urged to make frequent use of the Help feature.
  3591.  
  3592.  
  3593.  
  3594.                        
  3595.           Note:   If for  some reason you accidentally 'scrambled' your address          Note:
  3596.           label format during our exercise, don't worry you will find one among
  3597.           the sample  programs which  came on  your distribution  disk. Some of
  3598.           them, (including the address label format) will be  used later  on to
  3599.           give  you  an  idea  about  SCL  and  others will be discussed in the                                      SCL
  3600.           Appendix  A  of  this  manual  to   demonstrate  some   advanced  SCL
  3601.           programming technics.
  3602.  
  3603.  
  3604.  
  3605.  
  3606.  
  3607.  
  3608.  
  3609.  
  3610.  
  3611.  
  3612.  
  3613.  
  3614.  
  3615.  
  3616.  
  3617.  
  3618.  
  3619.  
  3620.  
  3621.  
  3622.  
  3623.  
  3624.           Chapter II,  SFD getting started                             page 55          Chapter II,  SFD getting started                             page 55
  3625.  
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3638.  
  3639.  
  3640.  
  3641.  
  3642.  
  3643.  
  3644.  
  3645.  
  3646.  
  3647.  
  3648.  
  3649.  
  3650.  
  3651.  
  3652.  
  3653.  
  3654.  
  3655.  
  3656.  
  3657.  
  3658.                                The Screen Format Designer                               The Screen Format Designer                       
  3659.                                               
  3660.                                         ( S F D )                                        ( S F D )                       
  3661.                                               
  3662.                                               
  3663.                                               
  3664.                                  Functional Description                                 Functional Description                       
  3665.  
  3666.  
  3667.  
  3668.  
  3669.  
  3670.  
  3671.  
  3672.  
  3673.  
  3674.  
  3675.  
  3676.  
  3677.  
  3678.  
  3679.  
  3680.  
  3681.  
  3682.  
  3683.  
  3684.  
  3685.  
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3704.  
  3705.  
  3706.                           Functional Description - Introduction                          Functional Description - Introduction
  3707.  
  3708.  
  3709.         | This chapter  of the  manual provides a functional description of The                                                                            The
  3710.         | Screen Format Designer Program.          Screen Format Designer
  3711.  
  3712.           The first chapter describes the basic program layout.
  3713.  
  3714.           It includes an overview on all files being used or created by  SFD as                                                                         SFD
  3715.           well as  the keyboard  functions and a description of the Online Help
  3716.           System.
  3717.  
  3718.           The  next chapter covers the main menu  and all  functions accessible
  3719.           from it.
  3720.  
  3721.           The  third  chapter  then  talks  about Format Design and all related
  3722.           functions. 
  3723.  
  3724.  
  3725.  
  3726.  
  3727.  
  3728.  
  3729.  
  3730.  
  3731.  
  3732.  
  3733.  
  3734.  
  3735.  
  3736.  
  3737.  
  3738.  
  3739.  
  3740.  
  3741.  
  3742.  
  3743.  
  3744.  
  3745.  
  3746.  
  3747.  
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.  
  3755.  
  3756.           Chapter II,  SFD functional description                      page 57          Chapter II,  SFD functional description                      page 57
  3757.  
  3758.  
  3759.  
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.  
  3768.  
  3769.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3770.  
  3771.  
  3772.                                 SFD Basic Program Layout                                SFD Basic Program Layout                       
  3773.                        
  3774.                        
  3775.           SFD has been designed around a Main Menu which automatically comes up          SFD
  3776.           as soon as the program has been started.
  3777.           All  basic  functions  are  shown  and accessible from here. They are
  3778.           logically  grouped  in  seven  lines.  Within  each  group  the  most
  3779.           important item is listed first.
  3780.         | The Up and Down keys can be used to jump between the groups and items
  3781.         | in a group are selected with the Right and Left keys.
  3782.  
  3783.           There are two functions on the main menu which are  considerably more
  3784.           complex  than  all  others  Format  layout  design and Test. They are
  3785.           virtually subsystems on their own.
  3786.  
  3787.         | Format layout design for example  leads  through  a  whole  series of
  3788.           screens and functions.
  3789.           It  first  starts  with  the  actual layout editor. Within the layout
  3790.           editor,  many  keys  have  a  different  meaning  compared  to normal
  3791.           operation and  there are  also a  lot of  special functions available
  3792.           including it's own little menu offering additional features. Once the
  3793.         | Layout  editor  is  left,  the  Format  Specification Mode is entered
  3794.           presenting  another  local  menu  with  all  selections  necessary to
  3795.           specify a format and it's fields.
  3796.         | Leaving the  Format Specification Mode then finally leads back to the
  3797.         | Main Menu.
  3798.  
  3799.         | The Format Test function is not  that complex  but it  also allows to
  3800.         | enter the  Format Specification  Mode, in this case via another local
  3801.           menu.
  3802.           This allows a very  interactive method  of testing  a new  format. If
  3803.           initial  requirements  are  not  met  or require to be redefined, the
  3804.           appropriate changes can be  performed  and  verified  instantly  in a
  3805.           simple iteration. 
  3806.  
  3807.  
  3808.  
  3809.  
  3810.  
  3811.  
  3812.  
  3813.  
  3814.  
  3815.  
  3816.  
  3817.  
  3818.  
  3819.  
  3820.  
  3821.  
  3822.           Chapter II,  SFD functional description                      page 58          Chapter II,  SFD functional description                      page 58
  3823.  
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3836.  
  3837.  
  3838.                                    Files used by SFD                                    Files used by SFD
  3839.  
  3840.  
  3841.           In order  to run,  SFD requires  the following files to be present in                             SFD
  3842.           the same subdirectory as SFD.EXE itself:
  3843.  
  3844.  
  3845.  
  3846.           SFD.FOR:           SFD.FOR:
  3847.  
  3848.           SFD's own format file, containing nearly sixty formats.  This file is          SFD's
  3849.           not exactly compatible with the '<Name>.SCS' files being generated by
  3850.           SFD and no attempt should be made to modify this file using SFD. This          SFD                                                         SFD
  3851.           could lead to unpredictable results. 
  3852.  
  3853.  
  3854.  
  3855.           SFD.FIN:          SFD.FIN:
  3856.  
  3857.           Sorted Index file for SFD.FOR. This file is similar to the <Name>.SCS
  3858.           files being generated by SFD and contains informations  to access the                                   SFD
  3859.           formats in SFD.FOR.
  3860.  
  3861.  
  3862.  
  3863.           SFD.MSG:          SFD.MSG:
  3864.  
  3865.         | Contains  all  field  messages  proprietary  to  SFD. It has the same                                                           SFD
  3866.           format as the <Name>.MSG files created by SFD.                                                    SFD
  3867.  
  3868.  
  3869.  
  3870.           SFD.ERR:          SFD.ERR:
  3871.  
  3872.         | A  Text  file  containing  all  necessary  system  messages,  i.e all
  3873.           messages  required  by  SCL  (as  contained  in  "SCL.ERR")  as  well                                  SCL
  3874.           additional ones having been especially defined for SFD.                                                             SFD
  3875.  
  3876.  
  3877.  
  3878.           SFD.DEF:          SFD.DEF:
  3879.  
  3880.         | This file is automatically created if any of the SFD Defaults (Design
  3881.           or System  Defaults) are changed and saved. If it is not present, SFD                                                                            SFD
  3882.           will use its own built in defaults. If for any  reason it  is desired
  3883.           to go back to default parameters, just remove this file.
  3884.  
  3885.  
  3886.  
  3887.  
  3888.           Chapter II,  SFD functional description                      page 59          Chapter II,  SFD functional description                      page 59
  3889.  
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.  
  3900.  
  3901.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3902.  
  3903.  
  3904.                                  Files generated by SFD                                 Files generated by SFD
  3905.  
  3906.  
  3907.           Whenever a new work file is opened with SFD, the following files will                                                  SFD
  3908.           be created: 
  3909.  
  3910.  
  3911.           <workfile>.SCS:          <workfile>.SCS:
  3912.           Format file. This  file  will  contain  all  formats  including their
  3913.           specifications with every format occupying about 4.5 KB.
  3914.           The  Layout  of  this  file  is  described  in  file  SCL.DOC as type
  3915.           'Screen'. 
  3916.           For a discussion of it's  content  refer  to  "Format Specifications"
  3917.           later in this manual. 
  3918.  
  3919.  
  3920.           <workfile>.SCI:          <workfile>.SCI:
  3921.           Index (Key) file for <workfile>.SCS.
  3922.           This file  contains indexing  information to  the format file such as
  3923.           all the format names and  the  relative  positions  of  these formats
  3924.           within <workfile>.SCS. 
  3925.           In  addition,  it  also  contains  informations  whether  a format is
  3926.           deleted. The layout of  this  file  can  be  found  in  SCL.DOC under
  3927.           'Sckeyrec'.
  3928.           It has  to be sorted in order to access formats in a user program via
  3929.           SCL. 
  3930.         | This is automatically done whenever you  Exit the  SFD program. Since                                                             SFD
  3931.           the  keyfile  is  very  small,  sorting  it  usually takes only a few
  3932.           seconds.
  3933.  
  3934.  
  3935.           <workfile>.MSG:          <workfile>.MSG:
  3936.         | Contains all explanatory messages specified for fields on  any of the
  3937.           formats  in  <workfile>.SCS.  The  format  file  itself only stores a
  3938.           pointer to these messages. 
  3939.           The  file  consists  of  records  with  a  length  of  71  bytes each
  3940.           (described in SCL.DOC as 'Msgrec'). 
  3941.           This leads  to a  maximum message  length of 70 bytes since the first
  3942.           byte of each record is used to store the length of the message.
  3943.  
  3944.  
  3945.           Note:  All of the above mentioned files are required by SCL to handle          Note:                                                   SCL
  3946.           the formats  in your  <workfile>. Details on how they are used can be
  3947.           found later in this manual under "The Screen Control Language".
  3948.  
  3949.  
  3950.  
  3951.  
  3952.  
  3953.  
  3954.           Chapter II,  SFD functional description                      page 60          Chapter II,  SFD functional description                      page 60
  3955.  
  3956.  
  3957.  
  3958.  
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964.  
  3965.  
  3966.  
  3967.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  3968.  
  3969.  
  3970.                                 Basic Keyboard Functions                                Basic Keyboard Functions
  3971.  
  3972.  
  3973.           The following keyboard functions apply for all formats in SFD. In the                                                                    SFD
  3974.           layout  editor  some  keys  have different functions. For details see
  3975.           under "The Layout Editor".
  3976.  
  3977.  
  3978.         |      Right     : 1.  In Travel Mode : Next Field.                Right
  3979.                        |                  2.  In Entry Mode : Next Character.
  3980.         |      Left      : 1.  In Travel Mode : Previous Field.                Left
  3981.                             |                  2.  In Entry Mode : Previous Character.
  3982.  
  3983.                Down      : First field on next line.               Down
  3984.                Up        : Last field on previous line.               Up
  3985.                Home      : First field in line.               Home
  3986.                End       : Last field in line.               End
  3987.  
  3988.                PgDn      : Last field on format.               PgDn
  3989.                PgUp      : First field on format.               PgUp
  3990.                Tab       : Next field.               Tab
  3991.                ShiftTab  : Previous field.               ShiftTab
  3992.  
  3993.                Backspace : Delete character left of cursor.               Backspace
  3994.                Insert    : Insert a space at the cursor position.               Insert
  3995.                Delete    : Delete character under cursor.               Delete
  3996.  
  3997.                Return    : 1.  Entry mode.               Return
  3998.                            2.  Finish field and advance to next field (if      
  3999.                                already in the last field, finish the format).
  4000.         |                  3.  Toggle Selected Status of a Constant.
  4001.  
  4002.                Escape    : Finish Format.               Escape
  4003.  
  4004.                F1        : Format related Help information.               F1
  4005.                F2        : Field related Help information.               F2
  4006.                F3        : UNDO. Restores field to previous content.               F3
  4007.                F10       : Abort current activity (not valid with everyformat).               F10
  4008.  
  4009.  
  4010.  
  4011.           Note:  A detailed explanation  of  all  key  functions  can  be found          Note:
  4012.           earlier in this manual under "Getting started".
  4013.           Keys only  being valid  in certain  contexts are mentioned where they
  4014.           apply.
  4015.  
  4016.  
  4017.  
  4018.  
  4019.  
  4020.           Chapter II,  SFD functional description                      page 61          Chapter II,  SFD functional description                      page 61
  4021.  
  4022.  
  4023.  
  4024.  
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  
  4031.  
  4032.  
  4033.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4034.  
  4035.  
  4036.  
  4037.                                   Online Help Facility                                  Online Help Facility
  4038.  
  4039.  
  4040.           SFD provides an extensive Online Help Facility in  up to  four levels          SFD
  4041.           as follows:
  4042.  
  4043.  
  4044.           Explanatory field input informations:          Explanatory field input informations:
  4045.           This feature  is only available with some formats, one being the main
  4046.           menu. SFD  automatically  displays  some  informations  regarding the                SFD
  4047.           currently active  field (in  the case of the main menu, on the bottom
  4048.           line).
  4049.  
  4050.  
  4051.           AutoHelp:          AutoHelp:
  4052.         | Optional feature,  selectable via  System Defaults  which causes some
  4053.           basic  Help  information  to  be  displayed  if a specified number of
  4054.           consecutive input errors have been made.
  4055.  
  4056.  
  4057.           Format Help:          Format Help:
  4058.           Context  sensitive  Help  relative  to  the  current  format.  Can be
  4059.         | accessed anytime by pressing F1.
  4060.  
  4061.  
  4062.           Field Help:          Field Help:
  4063.           Context sensitive  Help informations relative to the currently active
  4064.         | field. This  feature can  be accessed  anytime by  pressing F2. Field
  4065.           Help may not be available in all cases.
  4066.  
  4067.  
  4068.  
  4069.  
  4070.  
  4071.  
  4072.  
  4073.  
  4074.  
  4075.  
  4076.  
  4077.  
  4078.  
  4079.  
  4080.  
  4081.  
  4082.  
  4083.  
  4084.  
  4085.  
  4086.           Chapter II,  SFD functional description                      page 62          Chapter II,  SFD functional description                      page 62
  4087.  
  4088.  
  4089.  
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  
  4097.  
  4098.  
  4099.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4100.  
  4101.  
  4102.                                   Input Error Handling                                  Input Error Handling
  4103.  
  4104.           If an  Input error  is detected, the system reacts with a 'Beep' and,
  4105.           depending on the format, an error  message may  be displayed.  If the
  4106.         | Autohelp  feature  is  enabled  and a specified number of consecutive
  4107.           errors has occurred, a format containing some basic help informations
  4108.           is displayed in addition.
  4109.  
  4110.           There are  basically three different types of errors which can occur:
  4111.               
  4112.  
  4113.                1.   An invalid key has been pressed. 
  4114.                2.   Wrong data has been entered into a field.
  4115.                3.   A field where data entry is  mandatory has  not been filled
  4116.                     in.
  4117.  
  4118.  
  4119.           They are described in the following.
  4120.  
  4121.           Invalid Key          Invalid Key
  4122.  
  4123.           Whenever a  key is  pressed it  is checked  for validity in the given
  4124.           context. 
  4125.  
  4126.           Some examples:
  4127.  
  4128.         | * Entering a displayable character while being in a Constant
  4129.         |   field.
  4130.           * Pressing an 'Alpha' key where numeric data is anticipated.
  4131.           * Entering a decimal point if an integer number is required.
  4132.           * Pressing a function key not valid on this format.
  4133.  
  4134.  
  4135.           Wrong data          Wrong data
  4136.  
  4137.           Whenever an attempt is made to  leave a  field (i.e  pressing RETURN,
  4138.           TAB or a similar key) the data having been entered into it is checked
  4139.           for validity. Should it be found to be invalid, the user is forced to
  4140.           correct it before he is allowed to leave the field. 
  4141.  
  4142.  
  4143.           Missing mandatory data          Missing mandatory data
  4144.  
  4145.           Any attempt to leave a format missing mandatory data will be refused.
  4146.           The cursor  will automatically  be placed  into the first field where
  4147.           data was found to be missing. 
  4148.  
  4149.  
  4150.  
  4151.  
  4152.           Chapter II,  SFD functional description                      page 63          Chapter II,  SFD functional description                      page 63
  4153.  
  4154.  
  4155.  
  4156.  
  4157.  
  4158.  
  4159.  
  4160.  
  4161.  
  4162.  
  4163.  
  4164.  
  4165.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4166.  
  4167.  
  4168.                                       The Main Menu                                      The Main Menu
  4169.  
  4170.  
  4171.           The main menu is subdivided into  an header,  the main  body finally,
  4172.           below it, the message line.
  4173.  
  4174.  
  4175.  
  4176.           The Menu Header          The Menu Header
  4177.  
  4178.           In  it's  upper  part  the  program  name,  the  release number and a
  4179.           copyright note are displayed.
  4180.  
  4181.           Below this, there are three lines of information:
  4182.  
  4183.                        
  4184.           Act DIR           Act DIR
  4185.           Displays the currently active disk and subdirectory.
  4186.  
  4187.                        
  4188.           Workfile          Workfile
  4189.           Displays  name  and  path  of  the  currently  loaded    workfile (or
  4190.           '<none>').
  4191.  
  4192.                        
  4193.           Formats          Formats
  4194.           The number of valid formats in the current workfile.
  4195.  
  4196.  
  4197.  
  4198.  
  4199.           The Main body          The Main body
  4200.  
  4201.           It shows  seven groups (lines) of items. On the lefthand side of each
  4202.           line the name of a group of functions is mentioned and the entries to
  4203.           the  right  of  it  represent  the  functions  available  within  the
  4204.           appropriate group.
  4205.           All functions are described in the  following paragraphs  under their
  4206.           group description in the order they appear on the menu. 
  4207.  
  4208.  
  4209.  
  4210.  
  4211.           The Message Line          The Message Line
  4212.  
  4213.           A short explanation of the currently highlighted function. 
  4214.  
  4215.  
  4216.  
  4217.  
  4218.           Chapter II,  SFD functional description                      page 64          Chapter II,  SFD functional description                      page 64
  4219.  
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.  
  4229.  
  4230.  
  4231.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4232.  
  4233.  
  4234.                                          DESIGN                                         DESIGN
  4235.  
  4236.  
  4237.           This  Group  provides  all  functions  necessary  to  design a format
  4238.           layout, specify it's parameters  and finally  to test  it. Since this
  4239.           group is  amongst the most comprehensive parts of SFD  it's functions                                                            SFD
  4240.           are covered under an own header  ("Format Design")  later on  in this
  4241.           manual.
  4242.  
  4243.  
  4244.  
  4245.  
  4246.  
  4247.  
  4248.  
  4249.  
  4250.  
  4251.  
  4252.  
  4253.  
  4254.  
  4255.  
  4256.  
  4257.  
  4258.  
  4259.  
  4260.  
  4261.  
  4262.  
  4263.  
  4264.  
  4265.  
  4266.  
  4267.  
  4268.  
  4269.  
  4270.  
  4271.  
  4272.  
  4273.  
  4274.  
  4275.  
  4276.  
  4277.  
  4278.  
  4279.  
  4280.  
  4281.  
  4282.  
  4283.  
  4284.           Chapter II,  SFD functional description                      page 65          Chapter II,  SFD functional description                      page 65
  4285.  
  4286.  
  4287.  
  4288.  
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.  
  4295.  
  4296.  
  4297.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4298.  
  4299.                                           FILE                                          FILE                       
  4300.  
  4301.           There are three functions belonging to this group.
  4302.  
  4303.           Load File:          Load File:
  4304.           Load File  can not  only be selected via the main menu, it also comes
  4305.           up automatically   whenever  no  workfile  is  loaded  and  any other
  4306.           function requiring  a workfile  has been  selected. Allows  to load a
  4307.         | formatfile as the active workfile and can also be used  to change the
  4308.           active workfile. 
  4309.           If  this  Function  is  selected  SFD  will  ask  for the name of the                                            SFD
  4310.         | workfile to be loaded which will then be  searched for  in the Active
  4311.         | Directory.
  4312.         | Since a format file is always assumed to have an extension of .SCS it
  4313.           is not required to specify  it  and  any  extension  entered  will be
  4314.           ignored by SFD.                      SFD
  4315.         | If the  format file  specified exists  in the  active directory it is
  4316.           then loaded.
  4317.           Otherwise SFD displays a message prompting whether a  new file should                    SFD
  4318.           be created or not. 
  4319.           Note  that   if  another   format  file   was  loaded  before  it  is
  4320.           automatically saved to disk.
  4321.  
  4322.           In  case  the  specified  format  file  (<workfile>.SCS)  was  found,
  4323.           exceptions loading it are handled as follows:
  4324.  
  4325.           If no Indexfile (<workfile>.SCI) exists it will be created.
  4326.  
  4327.           If no  message file  (<workfile>.MSG) is found, SFD offers the option                                                          SFD
  4328.           to create a new (empty) one.
  4329.           Please note that in  this case  all field  messages which  might have
  4330.           been specified  for any  formats in  the <workfile>  will be lost and
  4331.           have to be reentered.
  4332.  
  4333.                        
  4334.           CHDir:          CHDir
  4335.           This option provides essentially the same services as  the equivalent
  4336.           DOS command. 
  4337.         | With  CHDir   you  can  change  the  currently  active  drive  and/or
  4338.           subdirectory. 
  4339.           A file to be loaded or to be copied from will always be assumed to be
  4340.         | in the Active Directory.
  4341.                        
  4342.           Note:   The active  directory and  even the current disk drive can be          Note: 
  4343.           changed anytime during program  execution, even  while a  workfile is
  4344.           loaded. Since SFD always stores the full path of any file having been                        SFD
  4345.           loaded, the  change of  the active  subdirectory does  not affect it.
  4346.           Therefore, a  file is  always stored  back to the subdirectory it was
  4347.           loaded from.
  4348.  
  4349.  
  4350.           Chapter II,  SFD functional description                      page 66          Chapter II,  SFD functional description                      page 66
  4351.  
  4352.  
  4353.  
  4354.  
  4355.  
  4356.  
  4357.  
  4358.  
  4359.  
  4360.  
  4361.  
  4362.  
  4363.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4364.  
  4365.  
  4366.           Crunch:          Crunch:
  4367.           This function physically removes all previously  deleted formats from
  4368.           the active workfile. 
  4369.         | Once a  Crunch has  been performed on a workfile it is not any longer
  4370.         | possible to undelete previously deleted formats. A Crunch reduces the
  4371.           size  of  the  format  file  by the space previously allocated to the
  4372.           deleted  formats  (about  4.5  KB  per  format)  and  also  speeds up
  4373.           subsequent format access.
  4374.         | For these  reasons it is recommended to perform a Crunch prior to use
  4375.           a format file in a program. 
  4376.           Before SFD attempts to crunch a file, it saves the old version of the                 SFD
  4377.           format file  under the  name <workfile>.BAK. This is done in order to
  4378.           provide a backup possibility in case of system errors etc  during the
  4379.           actual crunch operation. 
  4380.           The index file is not saved since it can easily be rebuild. 
  4381.  
  4382.  
  4383.           The following  procedure should  be applied  to recover an old format
  4384.         | file from <workfile>.BAK whenever it is suspected that an error might
  4385.         | have occurred  during Crunch and you are not sure about the integrity
  4386.           of the format file :
  4387.  
  4388.            1.  Save the files <workfile>.* on  a  backup  disk  and  store them
  4389.                safely away.
  4390.  
  4391.           On your work disk, perform the following operations:
  4392.  
  4393.            2.  Delete <workfile>.SCI, the index file. (This index file had been
  4394.         |      created to match the crunched version of the format file  and is
  4395.                therefore useless at the moment. 
  4396.  
  4397.            3.  If  present,  delete  file  <workfile>.SCS (the newly generated,
  4398.                crunched format file, which is suspected to be wrong.
  4399.  
  4400.            4.  Rename <workfile>.BAK to <workfile>.SCS.
  4401.  
  4402.            5.  Start SFD and load <workfile> as your workfile.                     SFD
  4403.  
  4404.            6.               SFD  will  automagically  create  a  new   index  file   for  it               SFD
  4405.                (<workfile>.SCI). 
  4406.  
  4407.            7.  Check the integrity of the format file by looking  at the number
  4408.                of formats and/or printing a format list. Once you are satisfied
  4409.                create   a   backup   copy   of  <workfile>.*  and  discard  the
  4410.                intermediate  backup copy you have made at the beginning of this
  4411.                procedure.
  4412.  
  4413.            8.  You  now  have  backed  up  to the point before you attempted to
  4414.         |      perform the Crunch operation.
  4415.  
  4416.           Chapter II,  SFD functional description                      page 67          Chapter II,  SFD functional description                      page 67
  4417.  
  4418.  
  4419.  
  4420.  
  4421.  
  4422.  
  4423.  
  4424.  
  4425.  
  4426.  
  4427.  
  4428.  
  4429.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4430.  
  4431.  
  4432.                                             FORMAT                                            FORMAT
  4433.  
  4434.  
  4435.           This set of functions deal with  copying, deleting  and undeleting of
  4436.           formats  in  the  workfile.  The  meaning  of  the single items is as
  4437.           follows:
  4438.  
  4439.           Copy:           Copy:
  4440.           Duplicates a format under a different name within  the workfile. This
  4441.           feature is  especially handy  if several similar formats are required
  4442.         | for one program. Using Copy to duplicate a master version  and change
  4443.           it later  on can  save considerable  time over  building every single
  4444.           format from scratch.
  4445.         | If Copy is selected you will be asked for the  name of  the format to
  4446.           be copied  (Origin) and the name under which you want it to be copied
  4447.         | (Destination). Destination must be  a name  not yet  existing in your
  4448.           format file.
  4449.         | Copy (together  with Delete) can also be used to change the name of a
  4450.           format by first copying it to  the new  name and  afterwards deleting
  4451.           the old one.
  4452.  
  4453.           Delete:          Delete:
  4454.           Deletes a format from the active work file. 
  4455.           Delete does not actually remove this format from the file, it is just
  4456.         | marked invalid  (logically  deleted).  This  has  several advantages,
  4457.           probably  the  biggest  one  being  that  it  can  still be recovered
  4458.           (undeleted). 
  4459.         | Please note that undelete is only possible as  long as  no Crunch has
  4460.           been performed on the work file.  
  4461.  
  4462.           Undelete:          Undelete:
  4463.         | Undelete restores  a format  which had been logically deleted before,
  4464.         | in other words, it can reverse a Delete  operation. Before attempting
  4465.         | to undelete  a format, make sure that no other format exists with the
  4466.           same name. 
  4467.         | The names of all formats capable  of being  undeleted can  be seen by
  4468.         | either printing a Format list or via the Display formats command.
  4469.  
  4470.           Transfer:           Transfer:
  4471.           To load a format from a different format file.
  4472.           If this  function is  selected SFD  will ask for both the name of the                                         SFD
  4473.           format file and the name of the format to be loaded. In case both can
  4474.         | be found  in your Active directory the format is added under the same
  4475.         | name to your active work file. Note that like in all cases  where you
  4476.           are asked  for a  format file,  the name of it is expected to have an
  4477.         | extension of .SCS, any other extension you may specify is masked off.
  4478.  
  4479.  
  4480.  
  4481.  
  4482.           Chapter II,  SFD functional description                      page 68          Chapter II,  SFD functional description                      page 68
  4483.  
  4484.  
  4485.  
  4486.  
  4487.  
  4488.  
  4489.  
  4490.  
  4491.  
  4492.  
  4493.  
  4494.  
  4495.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4496.  
  4497.  
  4498.                                          DISPLAY                                         DISPLAY
  4499.  
  4500.  
  4501.           Formats:           Formats:
  4502.           The names  of all formats in the current work file are displayed. The
  4503.         | logically deleted formats will be included  as well,  they are marked
  4504.           as being deleted. 
  4505.  
  4506.  
  4507.  
  4508.           Files:           Files:
  4509.         | Initiates a  display of  the names  of all format files in the active
  4510.         | directory.
  4511.  
  4512.  
  4513.  
  4514.           Directory:           Directory:
  4515.           Provides the same functions as the DOS "Dir" command.  
  4516.           A file specification according to DOS rules is expected and all files
  4517.           matching this specification will be displayed. 
  4518.           Wild  card  as  well  as drive/subdirectory specifications follow the
  4519.           same rules as for the DOS "Dir" command.
  4520.  
  4521.  
  4522.  
  4523.  
  4524.  
  4525.  
  4526.  
  4527.  
  4528.  
  4529.  
  4530.  
  4531.  
  4532.  
  4533.  
  4534.  
  4535.  
  4536.  
  4537.  
  4538.  
  4539.  
  4540.  
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547.  
  4548.           Chapter II,  SFD functional description                      page 69          Chapter II,  SFD functional description                      page 69
  4549.  
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4562.  
  4563.  
  4564.                                           PRINT                                          PRINT
  4565.  
  4566.  
  4567.           Single format:           Single format:
  4568.           Prints  a  hardcopy  of  the  format  specified,  accompanied   by  a
  4569.           description of its fields, on the active printer.
  4570.           If the  printer is  not ready  or out of paper, such a status will be
  4571.           reported back to you and you are given  the option  to either correct
  4572.           the situation or abort the print. 
  4573.           Note that  in order  to work correctly the printer must be capable to
  4574.           print the upper half of the character set according to IBM standard.
  4575.  
  4576.  
  4577.  
  4578.           All formats:          All formats:
  4579.           Similar to above, but prints hardcopies of all  valid formats  in the
  4580.           active work file.
  4581.  
  4582.  
  4583.  
  4584.           Format list:          Format list:
  4585.           Prints a  listing of the most important details of all formats in the
  4586.           active work file. 
  4587.  
  4588.  
  4589.           These are :
  4590.  
  4591.           Format name, size of the format, total number of fields,  cursor home
  4592.         | position, the  related help format and information whether the format
  4593.           is deleted or not.
  4594.  
  4595.           A summary is also added. It lists the total number of formats  in the
  4596.           file as well as the number of valid and deleted formats.
  4597.  
  4598.  
  4599.  
  4600.  
  4601.  
  4602.  
  4603.  
  4604.  
  4605.  
  4606.  
  4607.  
  4608.  
  4609.  
  4610.  
  4611.  
  4612.  
  4613.  
  4614.           Chapter II,  SFD functional description                      page 70          Chapter II,  SFD functional description                      page 70
  4615.  
  4616.  
  4617.  
  4618.  
  4619.  
  4620.  
  4621.  
  4622.  
  4623.  
  4624.  
  4625.  
  4626.  
  4627.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4628.  
  4629.  
  4630.                                         DEFAULTS                                        DEFAULTS
  4631.  
  4632.  
  4633.           The two  functions in  this group allow to inquire or change of SFD's                                                                          SFD's
  4634.           program default specifications. 
  4635.           If changed, the Option is given to save  the new  defaults in  a disk
  4636.           file (SFD.DEF) to be automatically used again with any subsequent run
  4637.           of SFD until they become altered again. If the option  is choosen not             SFD
  4638.           to save  the new  defaults, they  will only  be valid for the current
  4639.           program run. 
  4640.  
  4641.  
  4642.  
  4643.           Design:           Design:
  4644.  
  4645.           Left Field Limit:           Left Field Limit:
  4646.           The character to be  interpreted as  the left  limit of  a field, i.e
  4647.           whenever this  character is  found, SFD assumes that a field is about                                              SFD
  4648.           to start at the next character position. 
  4649.           The default setting of this parameter is '['. 
  4650.  
  4651.  
  4652.           Right Field Limit:           Right Field Limit:
  4653.           The character indicating the end of  a field.  The field  ends at the
  4654.           character position ipreceeding the Right Field  Limit Character. 
  4655.           The default is ']'.
  4656.  
  4657.  
  4658.           Note:    For    detailed  informations  on how to use the field limit          Note:
  4659.         | characters refer to Basic Format  Layout  Design.  later  on  in this
  4660.           manual.
  4661.  
  4662.  
  4663.           Background Color:           Background Color:
  4664.           One among  eight colors to be used as background during format layout
  4665.           design. 
  4666.           The default is 'Blue'.
  4667.  
  4668.  
  4669.           Foreground Color:           Foreground Color:
  4670.           One among sixteen colors to be used as foreground (text) color during
  4671.           format layout design. The default is 'light grey'.
  4672.  
  4673.  
  4674.           Note:   The above  two color options only apply when a color graphics          Note:
  4675.         | adapter is used. On  systems using  a Monochrome  adapter, the Design
  4676.         | Background Color is always "Black" and the foregound color is "White"
  4677.           (i.e the color of your screen).
  4678.  
  4679.  
  4680.           Chapter II,  SFD functional description                      page 71          Chapter II,  SFD functional description                      page 71
  4681.  
  4682.  
  4683.  
  4684.  
  4685.  
  4686.  
  4687.  
  4688.  
  4689.  
  4690.  
  4691.  
  4692.  
  4693.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4694.  
  4695.  
  4696.           Surrounding Area:          Surrounding Area:
  4697.         | Used by the Layout Editor. If a format layout work area is defined to
  4698.           be  smaller  than  a  full  screen,  the surrounding (unused) area is
  4699.           filled with the character specified  here.  The  default  setting for
  4700.           this option is Character Ascii (Hex) 'FA' (a dot).
  4701.  
  4702.  
  4703.           Note:   For more  information on  how to enter special characters see          Note:
  4704.           Appendix A, 'Tips and Tricks'.
  4705.  
  4706.  
  4707.  
  4708.  
  4709.  
  4710.  
  4711.  
  4712.  
  4713.  
  4714.  
  4715.  
  4716.  
  4717.  
  4718.  
  4719.  
  4720.  
  4721.  
  4722.  
  4723.  
  4724.  
  4725.  
  4726.  
  4727.  
  4728.  
  4729.  
  4730.  
  4731.  
  4732.  
  4733.  
  4734.  
  4735.  
  4736.  
  4737.  
  4738.  
  4739.  
  4740.  
  4741.  
  4742.  
  4743.  
  4744.  
  4745.  
  4746.           Chapter II,  SFD functional description                      page 72          Chapter II,  SFD functional description                      page 72
  4747.  
  4748.  
  4749.  
  4750.  
  4751.  
  4752.  
  4753.  
  4754.  
  4755.  
  4756.  
  4757.  
  4758.  
  4759.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4760.  
  4761.  
  4762.                                      System defaults                                     System defaults
  4763.  
  4764.  
  4765.           The following parameters can be altered:          The following parameters can be altered:
  4766.                        
  4767.  
  4768.           Auto Help:           Auto Help:
  4769.           SFD can be configured to automatically come up  with Help information          SFD
  4770.           if a certain number of consecutive input errors have occurred. 
  4771.           'Yes'  is  the  default  setting  and  indicates that this feature is
  4772.         | enabled. If 'No' is selected, Auto Help is disabled.
  4773.  
  4774.  
  4775.           After n Errors:           After n Errors:
  4776.         | Specifies the number of consecutive errors after which  the Auto help
  4777.           screen is to be displayed. 
  4778.           Please  note,  that  if  consecutive  errors  are  identical they are
  4779.           counted double i.e. the  second  and  all  following  occurrences are
  4780.           counted twice. 
  4781.           The Default is '3'.
  4782.  
  4783.  
  4784.           Beep yes/no:           Beep yes/no:
  4785.           Determines whether SFD 'beeps' in case of errors.                              SFD
  4786.           If 'no' is selected, SFD will stay quiet.                                SFD
  4787.           The default setting is 'Yes'.
  4788.  
  4789.  
  4790.           Length (ms):           Length (ms):
  4791.           Duration of the 'beep' tone in milliseconds. The default is 200.
  4792.  
  4793.  
  4794.           Pitch (Hz):           Pitch (Hz):
  4795.           Every   'beep' is  made up of several short bursts of two alternating
  4796.           frequencies which can be freely specified. 
  4797.           A Sound using a single frequency  can  be  selected  by  setting both
  4798.           frequencies to  the same  value. The  frequencies must be between 100
  4799.           and 9999 Hz. 
  4800.           The default settings are  200 Hz  for the  first and  350 Hz  for the
  4801.           second frequency.
  4802.  
  4803.  
  4804.           Field Blink Frequency:           Field Blink Frequency:
  4805.           SFD allows  to select  the frequency a field is blinking. This figure          SFD
  4806.           is expressed in milliseconds and determines the delay  to wait before
  4807.           inverting the field color again.                                            
  4808.                        
  4809.  
  4810.  
  4811.  
  4812.           Chapter II,  SFD functional description                      page 73          Chapter II,  SFD functional description                      page 73
  4813.  
  4814.  
  4815.  
  4816.  
  4817.  
  4818.  
  4819.  
  4820.  
  4821.  
  4822.  
  4823.  
  4824.  
  4825.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4826.  
  4827.                        
  4828.           Char YES:           Char YES:
  4829.           The Ascii code of the upper case letter indicating 'Yes', i.e. in the
  4830.           case of english '89' ('Y').
  4831.  
  4832.                        
  4833.           Char NO:           Char NO:
  4834.           Same as above for 'No', i.e in the case of english '78' ('N').
  4835.  
  4836.  
  4837.                        
  4838.           Note:  The above two  options  are  used  in  the  case  of 'boolean'          Note:
  4839.           fields. These  fields only allow either one of above characters to be
  4840.           entered. Lower case characters are automatically translated.
  4841.  
  4842.  
  4843.  
  4844.           Cursor Wraparound Disabled:          Cursor Wraparound Disabled:
  4845.           If this option is set to 'Yes' then Cursor Wraparound is disabled for
  4846.         | all formats  in SFD.  This Option is especially beneficial if a Mouse                          SFD
  4847.           is utilized to operate SFD.                                  SFD
  4848.         | Provided Cursor Wraparound is  not disabled,  pressing Right  or Down
  4849.           while being  in the  last field  of a  format moves the cursor to the
  4850.         | first field. The opposite happens if  Left  or  Up  is  pressed while
  4851.           being  in  the  first  field  of  a format. Please note, that even if
  4852.           cursor wraparound may not be disabled  it is  not available  with all
  4853.           formats in SFD.                      SFD
  4854.  
  4855.  
  4856.  
  4857.  
  4858.  
  4859.  
  4860.  
  4861.  
  4862.  
  4863.  
  4864.  
  4865.  
  4866.  
  4867.  
  4868.  
  4869.  
  4870.  
  4871.  
  4872.  
  4873.  
  4874.  
  4875.  
  4876.  
  4877.  
  4878.           Chapter II,  SFD functional description                      page 74          Chapter II,  SFD functional description                      page 74
  4879.  
  4880.  
  4881.  
  4882.  
  4883.  
  4884.  
  4885.  
  4886.  
  4887.  
  4888.  
  4889.  
  4890.  
  4891.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4892.  
  4893.  
  4894.                                           EXIT                                          EXIT                       
  4895.  
  4896.  
  4897.  
  4898.  
  4899.           Terminate Program:           erminate Program:
  4900.            
  4901.           If  a  workfile  was  loaded  it  is  automatically sorted before SFD                                                                            SFD
  4902.           terminates.
  4903.           This is necessary to make the formats within this workfile accessible
  4904.           for SCL routines.              SCL
  4905.  
  4906.            
  4907.           Note:  SCL cannot be used with unsorted format files.  Any attempt to          Note:  SCL
  4908.           do so will result in a fatal error aborting the appropriate program. 
  4909.  
  4910.  
  4911.  
  4912.  
  4913.  
  4914.  
  4915.  
  4916.  
  4917.  
  4918.  
  4919.  
  4920.  
  4921.  
  4922.  
  4923.  
  4924.  
  4925.  
  4926.  
  4927.  
  4928.  
  4929.  
  4930.  
  4931.  
  4932.  
  4933.  
  4934.  
  4935.  
  4936.  
  4937.  
  4938.  
  4939.  
  4940.  
  4941.  
  4942.  
  4943.  
  4944.           Chapter II,  SFD functional description                      page 75          Chapter II,  SFD functional description                      page 75
  4945.  
  4946.  
  4947.  
  4948.  
  4949.  
  4950.  
  4951.  
  4952.  
  4953.  
  4954.  
  4955.  
  4956.  
  4957.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  4958.  
  4959.  
  4960.                                       Format Design                                      Format Design                                      _____________
  4961.  
  4962.  
  4963.  
  4964.                                      Basic Work Flow                                     Basic Work Flow
  4965.  
  4966.  
  4967.           The basic flow of developping a new format is as follows:          The basic flow of developping a new format is as follows:
  4968.  
  4969.                1. Design of the basic format layout.
  4970.  
  4971.                2. Specification of all fields.
  4972.  
  4973.                3. Global specifications.
  4974.  
  4975.                4. Determination of colors & attributes.
  4976.  
  4977.                5. Test of the format and necessary changes.
  4978.  
  4979.  
  4980.  
  4981.                       
  4982.           Note:   This sequence only represents a crude guideline.          Note:
  4983.           Except for step 1, SFD does not impose  restrictions on  the sequence                             SFD
  4984.           these actions  have to  be performed. In practice, you will find that
  4985.           some steps can sometimes  be omitted  completely since  SFD's default                                                                  SFD's
  4986.           settings are often sufficient. 
  4987.           On  the  other  hand  you  may  find  that some activities have to be
  4988.           performed more than once in order to achieve the desired results.
  4989.  
  4990.  
  4991.           Initially, steps 1 through 4 should always be performed via  the main
  4992.         | menu item Layout Design.
  4993.           Beside a few restrictions, steps 2 to 4 can also be carried out using
  4994.         | the Format  test facility  with the  added advantage  that results of
  4995.           changes become immediately visible. 
  4996.         | However,  since  changes  are  much more convenient within the layout
  4997.         | design system it is advisable to perform all major specification work
  4998.           there and  use the  test facility only to carry out minor corrections
  4999.           found necessary while testing the format. 
  5000.  
  5001.  
  5002.  
  5003.  
  5004.  
  5005.  
  5006.  
  5007.  
  5008.  
  5009.  
  5010.           Chapter II,  format design                                   page 76          Chapter II,  format design                                   page 76
  5011.  
  5012.  
  5013.  
  5014.  
  5015.  
  5016.  
  5017.  
  5018.  
  5019.  
  5020.  
  5021.  
  5022.  
  5023.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5024.  
  5025.  
  5026.                                     The Layout Editor                                    The Layout Editor
  5027.  
  5028.  
  5029.           The Layout editor is  activated by  selecting the  first item  on the
  5030.         | Main Menu,  "Layout Design".  First, SFD will ask for the name of the                                               SFD
  5031.           format to  load.  In  case  this  format  exists,  it  is  loaded and
  5032.           displayed, otherwise  SFD gives you the option to create a new format                                SFD
  5033.           with the specified name.
  5034.           The Layout editor provides a worksheet to develop or change  a format
  5035.           layout as well as to specify size and location of its fields. 
  5036.           Formats in  the layout  editor are  displayed in a slightly different
  5037.         | fashion than  under Test  or if  they are  used in  a SCL application                                                                SCL
  5038.           program:
  5039.  
  5040.             *  All fields  are shown  with Left  and Right delimiters (Default:
  5041.                '[' and ']').
  5042.            
  5043.             *  The Cursor has the shape of a big block and can be  moved freely
  5044.                across the whole format. 
  5045.  
  5046.             *  If the  format is  smaller than a full screen (80 X 25) then the
  5047.                area outside the format is filled with the  characters specified
  5048.         |      for this purpose in Design Defaults.
  5049.  
  5050.  
  5051.           In addition some keys do have other meanings than in normal formats.
  5052.             
  5053.                        
  5054.           Note:    If  the  Layout  editor  has been instructed to create a new          Note:
  5055.           format, SFD assumes by  default that  it's size  is 25  lines with 80                  SFD
  5056.           characters each  (a full  screen). This  is the  reason why the whole
  5057.           screen is initially erased in order to serve as a drawing board. 
  5058.  
  5059.  
  5060.  
  5061.  
  5062.  
  5063.  
  5064.  
  5065.  
  5066.  
  5067.  
  5068.  
  5069.  
  5070.  
  5071.  
  5072.  
  5073.  
  5074.  
  5075.  
  5076.           Chapter II,  format design                                   page 77          Chapter II,  format design                                   page 77
  5077.  
  5078.  
  5079.  
  5080.  
  5081.  
  5082.  
  5083.  
  5084.  
  5085.  
  5086.  
  5087.  
  5088.  
  5089.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5090.  
  5091.  
  5092.           Layout editor Meaning of keys          Layout editor Meaning of keys
  5093.  
  5094.  
  5095.  
  5096.         | Backspace, Insert and Delete  have the  same meaning  as under normal          Backspace  Insert     Delete
  5097.           operation, but they do work on a full line instead of in a field.
  5098.  
  5099.           Home moves the cursor to the upper left corner of your worksheet.           Home
  5100.  
  5101.         | End  moves the cursor to the first character of the last line.          End
  5102.  
  5103.         | PgUp deletes the line under the cursor.          PgUp
  5104.  
  5105.         | PgDn inserts a line.          PgDn
  5106.  
  5107.         | Return moves the cursor to the first character of the next line.          Return
  5108.  
  5109.         | The Arrow keys allow the cursor to move freely on the format.
  5110.  
  5111.  
  5112.         | The Arrows are working in wrap-around mode as follows:           The Arrows are working in wrap-around mode as follows: 
  5113.           Right with the cursor being in the rightmost position moves it to the
  5114.           first position of the next line. 
  5115.  
  5116.           Left with the cursor being in the first position of  a line  moves it
  5117.           to the last position of the previous line.
  5118.  
  5119.           Right while  being in  the lower  right corner of the worksheet moves
  5120.           the cursor to the upper left corner. 
  5121.  
  5122.           Left while being in  the upper  left corner  moves the  cursor to the
  5123.           lower right corner of the worksheet. 
  5124.  
  5125.         | Pressing Up  while being  in the  first line  moves the cursor to the
  5126.         | last line and the opposite happens with Down while in the last line.
  5127.  
  5128.  
  5129.  
  5130.  
  5131.           Note:  All Special key functions belonging to  the layout  editor are          Note:
  5132.           discussed later  on in  this chapter  together with  the actions they
  5133.           perform.
  5134.  
  5135.  
  5136.  
  5137.  
  5138.  
  5139.  
  5140.  
  5141.  
  5142.           Chapter II,  format design                                   page 78          Chapter II,  format design                                   page 78
  5143.  
  5144.  
  5145.  
  5146.  
  5147.  
  5148.  
  5149.  
  5150.  
  5151.  
  5152.  
  5153.  
  5154.  
  5155.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5156.  
  5157.  
  5158.                                      Drawing Fields                                     Drawing Fields
  5159.  
  5160.  
  5161.         | All desired fields in a format must be  determined within  the Layout
  5162.         | Design phase.
  5163.           To  describe  their  position  and  length two special characters are
  5164.         | defined in SFD: The  Left Field  Delimiter (LD)  and the  Right Field
  5165.         | Delimiter (RD). 
  5166.           The default values are '[' for LD and ']' for RD. These values can be
  5167.         | changed to any other character via Design Defaults.
  5168.  
  5169.           A LD determines the begin of a field. SFD always assumes that a field                                                SFD
  5170.           begins at the character position immediately following an LD. 
  5171.           It also assumes that it ends at the position immediately before a RD.
  5172.           A field must always end on  the same  line it  begun, i.e  it may not
  5173.           continue on the next line.
  5174.           In order to allow consecutive fields with only one character position
  5175.           between them, it is possible to omit the RD character.  In this case,
  5176.           the LD  is interpreted as the termination of  a field at the position
  5177.           preceeding it and also as the start of  a new  field at  the position
  5178.           succeding it. 
  5179.           However you  should note that the last field on any line has still to
  5180.           be terminated with an RD character.
  5181.  
  5182.           According to this,  all  the  examples  below  represent  valid field
  5183.           constructions. (The  line below the actual delimiters shows the range
  5184.           of  each  field  as  described  by  the  delimiters  in  form  of 'x'
  5185.           characters).
  5186.  
  5187.  
  5188.  
  5189.  
  5190.  
  5191.            [        ]     [         [        [         ][         ]
  5192.             xxxxxxxx       xxxxxxxxx xxxxxxxx xxxxxxxxx  xxxxxxxxx  
  5193.  
  5194.  
  5195.  
  5196.  
  5197.  
  5198.  
  5199.  
  5200.  
  5201.  
  5202.  
  5203.  
  5204.  
  5205.  
  5206.  
  5207.  
  5208.           Chapter II,  format design                                   page 79          Chapter II,  format design                                   page 79
  5209.  
  5210.  
  5211.  
  5212.  
  5213.  
  5214.  
  5215.  
  5216.  
  5217.  
  5218.  
  5219.  
  5220.  
  5221.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5222.  
  5223.  
  5224.                                     Special Functions                                    Special Functions
  5225.  
  5226.  
  5227.           In order to facilitate the process of developing a format layout, the
  5228.           Layout Editor offers a whole  range  of  special  functions. Although
  5229.           very versalite, they can be activated using very few different keys.
  5230.           The ones  that are  most frequently  used are directly accessible via
  5231.           function keys. Some other, less often used functions can be called up
  5232.           via a small menu which itself is accessible with a function key.
  5233.  
  5234.  
  5235.  
  5236.           The appropriate Function keys are as follows:          The appropriate Function keys are as follows:
  5237.  
  5238.  
  5239.                F4  : Delete Block
  5240.  
  5241.                F5  : Mark Block Corner
  5242.  
  5243.                F6  : Copy Block
  5244.  
  5245.                F7  : Undraw Box (or line)
  5246.  
  5247.                F8  : Draw Box
  5248.  
  5249.                F9  : Menu Functions
  5250.  
  5251.  
  5252.           The  following  paragraphs  will  discuss  all  special  functions in
  5253.           logical sequence.
  5254.  
  5255.  
  5256.  
  5257.  
  5258.  
  5259.  
  5260.  
  5261.  
  5262.  
  5263.  
  5264.  
  5265.  
  5266.  
  5267.  
  5268.  
  5269.  
  5270.  
  5271.  
  5272.  
  5273.  
  5274.           Chapter II,  format design                                   page 80          Chapter II,  format design                                   page 80
  5275.  
  5276.  
  5277.  
  5278.  
  5279.  
  5280.  
  5281.  
  5282.  
  5283.  
  5284.  
  5285.  
  5286.  
  5287.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5288.  
  5289.  
  5290.           Mark Corner (F5)          Mark Corner (F5)
  5291.  
  5292.         | Many of the layout editors  special  functions  are  so  called Block
  5293.         | Functions. 
  5294.         | Before any  of these Block Functions can be performed it is necessary
  5295.           to important to describe the rectangular area (block) they should act
  5296.         | upon. This is done by simply marking its two diagonal corners.
  5297.           A block  does not necessarily have to be two-dimensionall it can also
  5298.         | be a line or a column of any desired length. In these cases just mark
  5299.           both ends of it.
  5300.            
  5301.           Pressing F5  sets a  mark at  the cursor  position, shown  as a small                   F5
  5302.           rhombus. 
  5303.  
  5304.         | Incidentally set Marks can simply be removed again by positioning the
  5305.         | cursor on them and pressing F5 again.
  5306.  
  5307.  
  5308.           Notes:   Only a  maximum of  two marks  may be  set at  any time, any          Notes:
  5309.           additional attempt is refused.  Marks  are  automatically  removed as
  5310.         | soon as the Block Function is performedn
  5311.  
  5312.  
  5313.  
  5314.           Copy Block (F6)          Copy Block (F6)
  5315.  
  5316.         | Pressing F6  will duplicate  the marked  block at  the current cursor                   F6
  5317.           position (Building it's upper  left  corner).  Please  note  that for
  5318.           obvious reasons  it is  not possible  to copy a block into itself, in
  5319.         | other words to a cursor position enclosed by the marked Block.
  5320.           If the block to be copied is bigger than the  space available  at the
  5321.           cursor  position,  the  parts  which  do  not  fit  are automatically
  5322.           truncated.
  5323.  
  5324.  
  5325.  
  5326.           Delete Block (F4)          Delete Block (F4)
  5327.  
  5328.         | F4 erases the marked Block, in other words, moves spaces  to it. This          F4
  5329.           function can also be used to erase the whole worksheet by marking its
  5330.           two corners. 
  5331.  
  5332.  
  5333.  
  5334.  
  5335.  
  5336.  
  5337.  
  5338.  
  5339.  
  5340.           Chapter II,  format design                                   page 81          Chapter II,  format design                                   page 81
  5341.  
  5342.  
  5343.  
  5344.  
  5345.  
  5346.  
  5347.  
  5348.  
  5349.  
  5350.  
  5351.  
  5352.  
  5353.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5354.  
  5355.  
  5356.           Draw Box (F8)          Draw Box (F8)
  5357.  
  5358.         | Pressing F8 causes a box to be drawn with the  two marks representing                   F8
  5359.           its diagonal corners.
  5360.           The linestyles  used for  both horizontal  and vertical  lines can be
  5361.         | selected via the local menu (for further details refer to "Local Menu
  5362.           Functions"). 
  5363.           When  using  single  or  double  lines  graphic characters the proper
  5364.           connections to other boxes will be done automagically. 
  5365.           Beside for drawing boxes, this function  can  also  be  used  to draw
  5366.           lines  by  positioning  the  two  marks  in  either  the  same column
  5367.           (vertical line) or the same row (horizontal line).
  5368.  
  5369.  
  5370.           Undraw box (F7)          Undraw box (F7)
  5371.  
  5372.           Erases the marked box, i.e replaces it by space characters.  The same
  5373.         | rules apply as for the Draw Box Function.
  5374.  
  5375.  
  5376.  
  5377.  
  5378.  
  5379.  
  5380.  
  5381.  
  5382.  
  5383.  
  5384.  
  5385.  
  5386.  
  5387.  
  5388.  
  5389.  
  5390.  
  5391.  
  5392.  
  5393.  
  5394.  
  5395.  
  5396.  
  5397.  
  5398.  
  5399.  
  5400.  
  5401.  
  5402.  
  5403.  
  5404.  
  5405.  
  5406.           Chapter II,  format design                                   page 82          Chapter II,  format design                                   page 82
  5407.  
  5408.  
  5409.  
  5410.  
  5411.  
  5412.  
  5413.  
  5414.  
  5415.  
  5416.  
  5417.  
  5418.  
  5419.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5420.  
  5421.  
  5422.                                      Menu Functions                                     Menu Functions
  5423.  
  5424.  
  5425.           The  menu  can  be  accessed  by pressing F9. It offers the following                                                    F9
  5426.           functions:
  5427.  
  5428.  
  5429.           Change Format size          Change Format size
  5430.  
  5431.           This function allows to  change  the  size  of  the  currently loaded
  5432.           format layout.
  5433.           Valid  sizes  can  be  anything  from  1  to  25  lines  with 1 to 80
  5434.           characters each. 
  5435.  
  5436.  
  5437.           Boxes Linestyles          Boxes Linestyles
  5438.  
  5439.           This function facilitates the selection of the linestyles  to be used
  5440.         | with the Box drawing feature.
  5441.           Possible linestyles  are displayed  in two groups, one for horizontal
  5442.           and  one  for  vertical  lines.  Each  of  them   can  be  determined
  5443.           independently. 
  5444.  
  5445.           Each group contains the following:
  5446.  
  5447.                1.   Double Line Block Graphics characters.
  5448.  
  5449.                2.   Single Line Block Graphics characters.
  5450.  
  5451.                3.   White half Blocks.
  5452.  
  5453.                4 to 6: Full Blocks in different shades. 
  5454.  
  5455.                7.   Any other character, see Text below.
  5456.  
  5457.            
  5458.           For  the  first  two  Options  (Single  and Double line block graphic
  5459.           characters),  SFD  is  even  capable  to  connect  boxes   using  the                        SFD
  5460.           appropriate 'X'  and 'T' elements available in the Character set. The
  5461.           last Option is used to choose any other displayable character.
  5462.           If selected,  another  format  comes  up  showing  an  extract  of 32
  5463.           characters at  a time  out of  the complete  system characterset. The
  5464.         | Left and Right  keys  can  then  be  used  to  point  to  the desired
  5465.           character or  to select  another set of 32 Characters to choose fromn
  5466.         | Once the desired character is found just press Return to pick it. 
  5467.           Using this feature boxes and/or lines made up for example  of smiling
  5468.           faces or $-signs can easily be created.
  5469.  
  5470.  
  5471.  
  5472.           Chapter II,  format design                                   page 83          Chapter II,  format design                                   page 83
  5473.  
  5474.  
  5475.  
  5476.  
  5477.  
  5478.  
  5479.  
  5480.  
  5481.  
  5482.  
  5483.  
  5484.  
  5485.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5486.  
  5487.  
  5488.           Key Redefinition          Key Redefinition
  5489.  
  5490.           This  function  allows  to  assign  any  desired  keyboard key to any
  5491.           displayable  character.  It becomes very handy if  certain Characters
  5492.           are required  in a  format which  can not normally be accessed with a
  5493.           keyboard key. 
  5494.           The selection of the appropriate character to be displayed works in a
  5495.         | similar  fashion  as  the  one  above  described  for User selectable
  5496.         | linestyles.
  5497.           Up to six keyboard keys can be redefined at the same time. 
  5498.                        
  5499.           Note: There exists also  another  possibility  to  display characters          Note:
  5500.           normally  not  accessible  via  the  keyboard  which  is described in
  5501.           Appendix A under 'Tips and Tricks'.
  5502.  
  5503.  
  5504.  
  5505.  
  5506.  
  5507.  
  5508.  
  5509.  
  5510.  
  5511.  
  5512.  
  5513.  
  5514.  
  5515.  
  5516.  
  5517.  
  5518.  
  5519.  
  5520.  
  5521.  
  5522.  
  5523.  
  5524.  
  5525.  
  5526.  
  5527.  
  5528.  
  5529.  
  5530.  
  5531.  
  5532.  
  5533.  
  5534.  
  5535.  
  5536.  
  5537.  
  5538.           Chapter II,  format design                                   page 84          Chapter II,  format design                                   page 84
  5539.  
  5540.  
  5541.  
  5542.  
  5543.  
  5544.  
  5545.  
  5546.  
  5547.  
  5548.  
  5549.  
  5550.  
  5551.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5552.  
  5553.  
  5554.                                   Format Specifications                                  Format Specifications
  5555.  
  5556.           All format specification parameters are stored  in the  actual format
  5557.           file (<Name>.SCS). 
  5558.         | Once a  new format has been designed and the Layout Editor is exited,
  5559.           all these parameters will be set to default  values, i.e  every field
  5560.           is assumed to be a variable, there is no input check to be performed,
  5561.           the color of the format is white on a black background and so on.
  5562.           These    specifications    can  then  be  tailored  to    your    own
  5563.           requirements.
  5564.           When an  existing format is modified, SFD where format specifications                                                SFD
  5565.         | can be changed. The main one is directly after the  layout Editor has
  5566.           been  exited  and  the  other  one, which is slightly limited in some
  5567.         | aspects is accessible via a local   menu   during  Format Test.   Two
  5568.           main groups  of specifications exist: 
  5569.  
  5570.           Field Specifications          Field Specifications
  5571.           The specifications defining a single field on a format. 
  5572.  
  5573.           Global Specifications          Global Specifications
  5574.           All specifications proprietary to the whole format.
  5575.  
  5576.           Not  only  are  the  format  specifications  directly  accessible and
  5577.           alterable but it is also possible  to copy  field specifications from
  5578.           another field  or to change colors and attributes of a whole group of
  5579.           fields such as all variables or all constants on a format.
  5580.  
  5581.  
  5582.         | Note:  Some parameters cannot be  modified during  Format Test, where          Note:
  5583.           this is the case, it is mentioned in the following.
  5584.  
  5585.           The discussion of the format specifications is subdivided under three
  5586.           headings:
  5587.  
  5588.  
  5589.               *  Field Specifications
  5590.               *  Colors and Attributes
  5591.               *  Global Specifications and Control Parameters
  5592.  
  5593.  
  5594.  
  5595.  
  5596.  
  5597.  
  5598.  
  5599.  
  5600.  
  5601.  
  5602.  
  5603.  
  5604.           Chapter II,  format design                                   page 85          Chapter II,  format design                                   page 85
  5605.  
  5606.  
  5607.  
  5608.  
  5609.  
  5610.  
  5611.  
  5612.  
  5613.  
  5614.  
  5615.  
  5616.  
  5617.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5618.  
  5619.  
  5620.                                   Field Specifications                                  Field Specifications
  5621.  
  5622.                        
  5623.           Type          Type
  5624.  
  5625.           Defines the field type.  This  parameter  cannot  be  modified during
  5626.         | Format Test. The possible choices are:
  5627.  
  5628.  
  5629.                Variable:  A  normal  data  entry  field.This  is  the  default.               Variable
  5630.         |      Constant: A selectable item (for example in a menu).               Constant
  5631.                Output  :               Output    A field not accessible  by the  cursor (for  example a
  5632.                          message line).
  5633.  
  5634.  
  5635.  
  5636.           Group from/to          Group from/to
  5637.         | Important  for   Constants.  All   Constants  within  one  group  are
  5638.           exclusive, i.e. only one field within a group can be  selected at any
  5639.           one time.  Enter the  numbers of  the first and the last field of the
  5640.           group. The default  is  the  current  field  for  both  values. These
  5641.           parameters have  no meaning  for fields  other than constants. If the
  5642.           field specifications  for the  first field  of a  group are modified,
  5643.           they are  automatically copied to all other fields of that group. The
  5644.           only parameters not being copied are: 'Selected' and 'Messages. 
  5645.         | This parameter can not be modified during Test.
  5646.  
  5647.  
  5648.           Message          Message
  5649.           A message can be specified for each field on a  format. It  is stored
  5650.         | in file  <Name>.MSG and  automatically displayed in the Message field
  5651.           (see  under  'Global  Specifications').  There  are  also  some other
  5652.           possibilities  to  use  this  message, see Appendix A under 'Advanced
  5653.           Programming Technics'. The default is no message.
  5654.  
  5655.  
  5656.           Helpscreen          Helpscreen
  5657.         | The name of the format to display if the Field help Key, usually 'F2'
  5658.           is pressed. The default is no helpscreen.
  5659.  
  5660.  
  5661.           Fill           Fill
  5662.           Variables only. The character to replace all spaces with if the field
  5663.         | is active. The default is <Space>.
  5664.  
  5665.  
  5666.  
  5667.  
  5668.  
  5669.  
  5670.           Chapter II,  format design                                   page 86          Chapter II,  format design                                   page 86
  5671.  
  5672.  
  5673.  
  5674.  
  5675.  
  5676.  
  5677.  
  5678.  
  5679.  
  5680.  
  5681.  
  5682.  
  5683.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5684.  
  5685.  
  5686.           Delimiter Left          Delimiter Left
  5687.         | The character  to  display  at  the  position  where  the  Left field
  5688.         | delimiter was  put during  Layout Design,  i.e the character position
  5689.           preceeding the field. 
  5690.           The default is <space>.
  5691.  
  5692.           Delimiter Right          Delimiter Right
  5693.         | The character to  display  at  the  position  where  the  Right field
  5694.         | delimiter was  put during Layout Design, i.e the position immediately
  5695.           after the field. 
  5696.           The default is <space>. 
  5697.  
  5698.           Justify          Justify
  5699.           Determines how text within the field is to be justified. The possible
  5700.           choices are 'Left', 'Right' and 'Center'. The default is 'Left'.
  5701.  
  5702.           Decimals          Decimals
  5703.           Numeric  variables  onlyn  Determines  how  many  positions are to be
  5704.           displayed after the decimal point. The default is 0 (zero).
  5705.  
  5706.           Mandatory          Mandatory
  5707.           Determines whether input is  mandatory  to  this  field.  In  case of
  5708.         | constants it  determines whether  a selection within the Group has to
  5709.           be made. The default is 'No'.
  5710.  
  5711.           Selected          Selected
  5712.           Determines    the    initial  status  of  the    boolean    attribute
  5713.           'Selected'. It  usually applies  to constants but it can also be used
  5714.           for some special effects like highlighting etc. See  Appendix A under
  5715.           'Advanced Programming  Technics' for  details. The  default status is
  5716.           'No'. Note that this attribute cannot be copied to other fields. 
  5717.  
  5718.           Char Check          Char Check
  5719.           If this parameter is set  to  'Yes',  each  single  keystroke  can be
  5720.           externally checked,  i.e SCL  hands over  control to your application                                   SCL
  5721.           after each keystroke before actually acting on it. For details on the
  5722.           use  of  this  parameter  see  the  description  of the SCL procedure                                                                  SCL
  5723.           'Handle_Format' later on in  this  manual.  Additional  hints  can be
  5724.           found in Appendix A (Sample Programs, especially Sample 4).
  5725.  
  5726.           The default for this parameter is 'No'.
  5727.  
  5728.  
  5729.  
  5730.  
  5731.  
  5732.  
  5733.  
  5734.  
  5735.  
  5736.           Chapter II,  format design                                   page 87          Chapter II,  format design                                   page 87
  5737.  
  5738.  
  5739.  
  5740.  
  5741.  
  5742.  
  5743.  
  5744.  
  5745.  
  5746.  
  5747.  
  5748.  
  5749.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5750.  
  5751.  
  5752.           Input Check          Input Check
  5753.           Variables only.  Determines the  kind of data to be accepted as valid
  5754.           input in this field.
  5755.           The possibilities are as follows:
  5756.  
  5757.                                       None: No input check is performed.  Any data  may be  entered in               None
  5758.                this field. This is the default.
  5759.  
  5760.                Integer: Only integer numbers may be entered. Any other input is               Integer
  5761.                refused. The numeric value entered must be within  the limits of
  5762.                'Min' to 'Max' (see below). The maximum possible range is -32768
  5763.                to +32767. Fields where entries outside this range  are required
  5764.                must be declared as 'Real' (see below).
  5765.  
  5766.                Real: Any number with or without a decimal point can be entered.               Real
  5767.                It's value must be in the range of  'Min' to  'Max' (see below).
  5768.                It is not possible to enter numbers in scientific notation.
  5769.  
  5770.                Alpha: Only  alpha characters  are allowed  in this field. Other               Alpha
  5771.                input is refused.
  5772.  
  5773.         |      Y,y,N,n:  Only  the  characters   defined  as   Boolean_Yes  and               Y,y,N,n
  5774.         |      Boolean_No (both  lower and  upper case)  may be entered in this
  5775.                field. For Details see the explanation of these  two SCL routine                                                                    SCL
  5776.                upon the  initialisation of  the program.  This feature makes it
  5777.                possible to define optimum formats without any compromises. 
  5778.  
  5779.  
  5780.  
  5781.  
  5782.  
  5783.  
  5784.  
  5785.  
  5786.  
  5787.  
  5788.  
  5789.  
  5790.  
  5791.  
  5792.  
  5793.  
  5794.  
  5795.  
  5796.  
  5797.  
  5798.  
  5799.  
  5800.  
  5801.  
  5802.           Chapter II,  format design                                   page 88          Chapter II,  format design                                   page 88
  5803.  
  5804.  
  5805.  
  5806.  
  5807.  
  5808.  
  5809.  
  5810.  
  5811.  
  5812.  
  5813.  
  5814.  
  5815.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5816.  
  5817.  
  5818.                                   Monochrome Attributes                                  Monochrome Attributes                       
  5819.  
  5820.           Normal: The way the field should appear if it is neither 'active' nor          Normal
  5821.           'selectedg.  The  possible  choices  are  white characters on a black
  5822.           background  (Norm)  or  white  intensified  characters   on  a  black
  5823.           background (Intens). The default is 'Norm'.
  5824.  
  5825.  
  5826.  
  5827.           Selected:  The  way  the  field  should look if it is 'Selected' (see          Selected
  5828.           above). The possible choices are:
  5829.              Invert  : Black text on white background.
  5830.              Underl  : Text underlined.
  5831.              Intens  : Intensified textn
  5832.              Marked  : Two triangles are displayed to the left and the
  5833.                        right of the field.
  5834.  
  5835.  
  5836.           Combinations of above  attributes  are  possible  with  the following
  5837.           exceptions:
  5838.                Invert and Underline are exclusive.
  5839.                Invert and Intensified result in Invert only.
  5840.  
  5841.  
  5842.           Active: The  way the  field should be highlighted if the cursor is in          Active
  5843.           it. Possible choices are:
  5844.  
  5845.              Invert  :   The field is inverted.
  5846.              Underl  :   Underlined text.
  5847.              Intens  :   Intensified text.
  5848.              Marked  :   Two blinking triangles are  displayed to  the left and
  5849.                          the right of the field.
  5850.              Blink   :   The field blinks.
  5851.  
  5852.  
  5853.           Combinations  of  the  above  attributes  are  possible with the same
  5854.         | exceptions as the ones mentioned for  the Selected  attributes. Since
  5855.         | the Active  attributes are  just 'added'  if the field becomes active
  5856.           (for example, a constant can be both 'selected'  and 'activeg  at the
  5857.           same time)  careful consideration  should be  given the question what
  5858.           combination of  attributes should  be used.  If for  example the same
  5859.           attributes are choosen for both 'active' and 'selected' it may not be
  5860.           possible to see, in  which  field  the  cursor  is  (in  the  case of
  5861.           'marked', there  is a  differentiation because the triangles blink if
  5862.           the field is active). In addition, restrictions apply to the combined
  5863.           use of  'Invert' together with 'Underline' or 'Intens'. The result is
  5864.           always 'Invert' only. 
  5865.  
  5866.  
  5867.  
  5868.           Chapter II,  format design                                   page 89          Chapter II,  format design                                   page 89
  5869.  
  5870.  
  5871.  
  5872.  
  5873.  
  5874.  
  5875.  
  5876.  
  5877.  
  5878.  
  5879.  
  5880.  
  5881.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5882.  
  5883.  
  5884.                                     Color Attributes                                    Color Attributes
  5885.  
  5886.  
  5887.           The Color Attributes are less complicated to use  than the monochrome
  5888.           ones. For  both 'Normal'  and 'Selected' there is a choice of one out
  5889.           of eight background colors and one  out of  sixteen foreground (text)
  5890.           colors.
  5891.           All available colors are listed in Appendix B.
  5892.  
  5893.           As  far  as  the  'Active'  attribute  is  concerned  there are three
  5894.           different options.
  5895.  
  5896.           Invert:  The  field  colors  are  inverted,  i.e  background  becomes          Invert:
  5897.           foreground  and  vice  versa.  Since  intensified  background  is not
  5898.           possible, these colors are  replaced by  their non  intensified (i.e.
  5899.           darker) counterpart.
  5900.  
  5901.           Blink : The field is made blinking.          Blink :
  5902.  
  5903.           Intens: The text is displayed intensified.           Intens:
  5904.  
  5905.           The combination  of the  above options  is possible  but it should be
  5906.           considered that the 'Intens'  attribute  is  only  meaningful  if the
  5907.           foreground  colors  choosen  for  'Normal'  and  'Selected'  are  non
  5908.           intensified ones, otherwise it won't be visible.
  5909.  
  5910.  
  5911.  
  5912.  
  5913.  
  5914.  
  5915.  
  5916.  
  5917.  
  5918.  
  5919.  
  5920.  
  5921.  
  5922.  
  5923.  
  5924.  
  5925.  
  5926.  
  5927.  
  5928.  
  5929.  
  5930.  
  5931.  
  5932.  
  5933.  
  5934.           Chapter II,  format design                                   page 90          Chapter II,  format design                                   page 90
  5935.  
  5936.  
  5937.  
  5938.  
  5939.  
  5940.  
  5941.  
  5942.  
  5943.  
  5944.  
  5945.  
  5946.  
  5947.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  5948.  
  5949.  
  5950.                                  Global Specifications                                  Global Specifications                        
  5951.                                   & Control Parameters                                  & Control Parameters
  5952.  
  5953.  
  5954.           Global Specifications          Global Specifications
  5955.  
  5956.  
  5957.           Cursor Home:          Cursor Home:
  5958.           System generated and not changeable. The first cursor accessible (non
  5959.           Output) field on the format.
  5960.  
  5961.  
  5962.           Input Message Field:          Input Message Field:
  5963.           The  field  where  all  Input  Messages  are  to  be displayed (Input
  5964.           Messages are the messages  specified  for  single  fields,  see under
  5965.           'Field Specifications'  for details).  If this  Parameter is set to 0
  5966.           (zero)  no  input  messages  are  displayed.  Note  that  for obvious
  5967.           reasons, the field specified for input messages should be an 'Output'
  5968.           field, i.e. not be accessible by the cursor.
  5969.           The default for this parameter is 0.
  5970.  
  5971.  
  5972.           Error Message Field:          Error Message Field:
  5973.           The field where all (system as well as user generated) error messages
  5974.         | are  displayed.  Everything  said  above  for the Input Message Field
  5975.           applies here as well. If this field  is  set  to  0  (zero)  no error
  5976.           messages are  displayed. There  are no  restrictions to  use the same
  5977.           field for both error and input messages.
  5978.           The default is 0 (zero) i.e no error messages are displayed.
  5979.  
  5980.  
  5981.           Help Format:          Help Format:
  5982.         | The name of the  format  to  be  displayed  if  the  Format  Help Key
  5983.           (usually 'F1') is pressed. The default is no help format.
  5984.  
  5985.  
  5986.           Color Foreground:          Color Foreground:
  5987.           One out of sixteen colors in which the text on the format (except for
  5988.           the fields) is to be displayed. This option is only meaningful in the
  5989.           case of Color screens. On monochrome screens, the foreground color is
  5990.           always white, non intensified.
  5991.  
  5992.  
  5993.           Color Background:          Color Background:
  5994.           One out of colors in which the format background (except for the 
  5995.           fields) is to be displayed.   For    monochrome  screens,  the format
  5996.           background is always black.
  5997.  
  5998.  
  5999.  
  6000.           Chapter II,  format design                                   page 91          Chapter II,  format design                                   page 91
  6001.  
  6002.  
  6003.  
  6004.  
  6005.  
  6006.  
  6007.  
  6008.  
  6009.  
  6010.  
  6011.  
  6012.  
  6013.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6014.  
  6015.  
  6016.           Cursor Wraparound:          Cursor Wraparound:
  6017.         | If Cursor  Wraparound is  disabled, pressing  Right or Down while the
  6018.         | cursor is in the last field or Left or Up while the cursor is  in the
  6019.           first field causes a beep. Otherwise, the cursor would be advanced to
  6020.           the first or last field, respectively. 
  6021.  
  6022.                        
  6023.           Note:   Alternatively, Cursor  Wraparound can  also be  disabled on a          Note:
  6024.           global basis,  i.e effective  for all formats in a program by setting
  6025.           the SCL Constant 'No_Wrap'  to TRUE.  Refer to  the SCL  part of this              SCL                                             SCL
  6026.           manual for more details. 
  6027.  
  6028.  
  6029.           Format Abort Ok          Format Abort Ok
  6030.         | If  this  option  is  set  to  'Yes', pressing the F10 key causes the
  6031.         | format to be unconditionally terminated, otherwise the Abort function
  6032.           is disabled for this format. 
  6033.  
  6034.  
  6035.  
  6036.  
  6037.  
  6038.  
  6039.  
  6040.  
  6041.  
  6042.  
  6043.  
  6044.  
  6045.  
  6046.  
  6047.  
  6048.  
  6049.  
  6050.  
  6051.  
  6052.  
  6053.  
  6054.  
  6055.  
  6056.  
  6057.  
  6058.  
  6059.  
  6060.  
  6061.  
  6062.  
  6063.  
  6064.  
  6065.  
  6066.           Chapter II,  format design                                   page 92          Chapter II,  format design                                   page 92
  6067.  
  6068.  
  6069.  
  6070.  
  6071.  
  6072.  
  6073.  
  6074.  
  6075.  
  6076.  
  6077.  
  6078.  
  6079.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6080.  
  6081.  
  6082.                                    User Function Keys                                   User Function Keys
  6083.  
  6084.  
  6085.           The  User  Function  Key  specifications control SCL's user interrupt                                                           SCL's
  6086.           system. This facility allows to  invoke  user  written  routines upon
  6087.           certain occasions while the format is being handled by SCL routines.                                                                 SCL
  6088.           Details and  examples on how to use them can be found in both the SCL                                                                            SCL
  6089.           part of this manual and in Appendix A. 
  6090.           In principle they work as follows: 
  6091.           When  a  specified   condition   occurs,      the   SCL     procedure                                                              SCL
  6092.           'Handle_format'  notifies  an  external  procedure  and  gives it the
  6093.           choice to do whatever it is intended for (like a  special input check
  6094.           for example). 
  6095.           This external  procedure can also return a result indicating an error
  6096.           or a  exception to  cause 'Handle_format'  to proceed  in the desired
  6097.           way.
  6098.  
  6099.  
  6100.           By default,  i.e. without  the need  to be  explicitly specified, SCL                                                                            SCL
  6101.           allows you to invoke external  procedures  whenever  a  new  field is
  6102.           entered with the cursor, when it is being left and when the format is
  6103.           due to be exited. 
  6104.  
  6105.  
  6106.           Beside what  is mentioned  above it  is possible  to specify optional
  6107.         | User Function  Keys for  any format. User Function keys can be any of
  6108.           the ten  actual Function keys (F1 to F10) and additionally to this up
  6109.           to ten other keyboard keys. 
  6110.  
  6111.  
  6112.           F1 through F10:          F1 through F10:
  6113.           If selected,  causes 'Handle_format' to transfer control whenever the
  6114.           corresponding function key has been pressed. There are  numerous uses
  6115.           for these  Interrupts like  the initiation of program functions or to
  6116.           temporarily disable SCL functions like 'Help' etc.                              SCL
  6117.  
  6118.  
  6119.           Remaining fields:          Remaining fields:
  6120.           Up to ten different keyboard keys  can be  defined per  format which,
  6121.           when  pressed,  cause  'Handle_format' to transfer control. 'Keyboard
  6122.           keys' in this context can also be combinations like 'CNTRL-LEFT' etc.
  6123.         | To define a key  as a  User Function  move the  cursor to  one of the
  6124.         | fields containing  the text  '<deleted>' and press Return. Then press
  6125.         | the key  or key  combination you  want to  specify. To  delete a User
  6126.         | function Key  specification, just  position the  cursor on it and hit
  6127.         | Return.
  6128.         |  
  6129.  
  6130.  
  6131.  
  6132.           Chapter II,  format design                                   page 93          Chapter II,  format design                                   page 93
  6133.  
  6134.  
  6135.  
  6136.  
  6137.  
  6138.  
  6139.  
  6140.  
  6141.  
  6142.  
  6143.  
  6144.  
  6145.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6146.  
  6147.  
  6148.                                     The Test Feature                                    The Test Feature
  6149.  
  6150.  
  6151.           Introduction          Introduction
  6152.  
  6153.  
  6154.           SFD allows new formats to be  tested without  having to  write a user          SFD
  6155.         | program. With  very few limitations, formats under Test react exactly
  6156.           as they later on  will in  a user  program. This  even includes input
  6157.           checks etc. 
  6158.           While a format is being tested, it is possible to modify most of it's
  6159.           specifications and  instantly observe  the results  of these changes,
  6160.           thus allowing for a very interactive way of developing formats.
  6161.  
  6162.  
  6163.  
  6164.                                      The local Menu                                     The local Menu
  6165.  
  6166.  
  6167.         | All  functions  to  modify  Format  Specifications  during  Test  are
  6168.           available through a local menu which can be called up by pressing key
  6169.           'F9'. 
  6170.  
  6171.           It offers the following choices:
  6172.  
  6173.  
  6174.           Change Field Specifications/Active Field          Change Field Specifications/Active Field
  6175.           Allows  to  change  the  specifications  of  the  field the cursor is
  6176.           currently in. 
  6177.  
  6178.                        
  6179.           Change Field Specification/Other Field          Change Field Specification/Other Field
  6180.           This Option is mainly  intended but  not limited  to allow  to change
  6181.           'Output' fields. If choosen, SFD will ask for the number of the field                                       SFD
  6182.           whose specifications are to be changed.
  6183.  
  6184.                        
  6185.           Change Global Colors/Attributes          Change Global Colors/Attributes
  6186.           Allows to change Colors or attributes of all fields of  a type  to be
  6187.         | specified (Variable,  Constant or Output) on the format under Test in
  6188.           one go.
  6189.  
  6190.                        
  6191.           Change Format/Control Specifications          Change Format/Control Specifications
  6192.           Allows to change the Global Specifications  as well  as the Interrupt
  6193.           Parameters.
  6194.  
  6195.  
  6196.  
  6197.  
  6198.           Chapter II,  format design                                   page 94          Chapter II,  format design                                   page 94
  6199.  
  6200.  
  6201.  
  6202.  
  6203.  
  6204.  
  6205.  
  6206.  
  6207.  
  6208.  
  6209.  
  6210.  
  6211.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6212.  
  6213.  
  6214.                                    System Limitations                                   System Limitations
  6215.  
  6216.  
  6217.           The SFD Format Test Feature has a few limitations. These are:              SFD
  6218.  
  6219.  
  6220.           Speed          Speed
  6221.  
  6222.           Since rather than reading from memory as it normally would be done by
  6223.           SCL much information has to be read from disk, thus  slowing down the          SCL
  6224.         | operation of a format under Test quite considerably.
  6225.  
  6226.  
  6227.           Help Formats          Help Formats
  6228.  
  6229.           It  is  not  possible  to  access  the Help formats specified for the
  6230.         | format under Test via F1 and F2. They  have to  be tested seperately.
  6231.         | F1  and  F2  display  SFD's  own  help  information  relative to Test                                SFD's
  6232.           operations.
  6233.  
  6234.  
  6235.           Format Specifications          Format Specifications
  6236.  
  6237.         | Some specifications can not  be altered  during Test.  These include:
  6238.           Field  Type,  Group  from/to  and  Input and error message fields. In
  6239.           order to change these specifications the format has to be loaded into
  6240.         | the Layout Editor and the changes have to be performed there. 
  6241.  
  6242.              
  6243.  
  6244.  
  6245.  
  6246.  
  6247.  
  6248.  
  6249.  
  6250.  
  6251.  
  6252.  
  6253.  
  6254.  
  6255.  
  6256.  
  6257.  
  6258.  
  6259.  
  6260.  
  6261.  
  6262.  
  6263.  
  6264.           Chapter II,  format design                                   page 95          Chapter II,  format design                                   page 95
  6265.  
  6266.  
  6267.  
  6268.  
  6269.  
  6270.  
  6271.  
  6272.  
  6273.  
  6274.  
  6275.  
  6276.  
  6277.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6278.  
  6279.  
  6280.  
  6281.  
  6282.  
  6283.  
  6284.  
  6285.  
  6286.  
  6287.  
  6288.  
  6289.  
  6290.  
  6291.  
  6292.  
  6293.  
  6294.  
  6295.  
  6296.  
  6297.  
  6298.                           This Page is intentionally left blank
  6299.  
  6300.  
  6301.  
  6302.  
  6303.  
  6304.  
  6305.  
  6306.  
  6307.  
  6308.  
  6309.  
  6310.  
  6311.  
  6312.  
  6313.  
  6314.  
  6315.  
  6316.  
  6317.  
  6318.  
  6319.  
  6320.  
  6321.  
  6322.  
  6323.  
  6324.  
  6325.  
  6326.  
  6327.  
  6328.  
  6329.  
  6330.           Chapter II,  format design                                   page 96          Chapter II,  format design                                   page 96
  6331.  
  6332.  
  6333.  
  6334.  
  6335.  
  6336.  
  6337.  
  6338.  
  6339.  
  6340.  
  6341.  
  6342.  
  6343.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6344.  
  6345.  
  6346.  
  6347.  
  6348.  
  6349.  
  6350.  
  6351.  
  6352.  
  6353.  
  6354.  
  6355.  
  6356.  
  6357.  
  6358.  
  6359.  
  6360.  
  6361.  
  6362.  
  6363.  
  6364.  
  6365.  
  6366.  
  6367.                                        Chapter III                                       Chapter III                       
  6368.  
  6369.  
  6370.  
  6371.  
  6372.  
  6373.  
  6374.  
  6375.  
  6376.  
  6377.  
  6378.  
  6379.  
  6380.  
  6381.  
  6382.  
  6383.  
  6384.  
  6385.  
  6386.  
  6387.  
  6388.  
  6389.  
  6390.  
  6391.  
  6392.  
  6393.  
  6394.  
  6395.  
  6396.  
  6397.  
  6398.  
  6399.  
  6400.  
  6401.  
  6402.  
  6403.  
  6404.  
  6405.  
  6406.  
  6407.  
  6408.  
  6409.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6410.  
  6411.  
  6412.  
  6413.  
  6414.  
  6415.  
  6416.  
  6417.  
  6418.  
  6419.  
  6420.  
  6421.  
  6422.  
  6423.  
  6424.  
  6425.  
  6426.  
  6427.  
  6428.  
  6429.  
  6430.  
  6431.                           This Page is intentionally left blank
  6432.  
  6433.  
  6434.  
  6435.  
  6436.  
  6437.  
  6438.  
  6439.  
  6440.  
  6441.  
  6442.  
  6443.  
  6444.  
  6445.  
  6446.  
  6447.  
  6448.  
  6449.  
  6450.  
  6451.  
  6452.  
  6453.  
  6454.  
  6455.  
  6456.  
  6457.  
  6458.  
  6459.  
  6460.  
  6461.  
  6462.           Chapter III, Screen Control Language                         page 98          Chapter III, Screen Control Language                         page 98
  6463.  
  6464.  
  6465.  
  6466.  
  6467.  
  6468.  
  6469.  
  6470.  
  6471.  
  6472.  
  6473.  
  6474.  
  6475.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6476.  
  6477.  
  6478.  
  6479.              
  6480.             
  6481.  
  6482.  
  6483.  
  6484.  
  6485.  
  6486.  
  6487.  
  6488.  
  6489.  
  6490.  
  6491.  
  6492.  
  6493.  
  6494.  
  6495.  
  6496.                                  Screen Control Language                                 Screen Control Language                       
  6497.                        
  6498.                                         ( S C L )                                        ( S C L )                                                 
  6499.  
  6500.  
  6501.  
  6502.  
  6503.  
  6504.  
  6505.  
  6506.  
  6507.  
  6508.  
  6509.  
  6510.  
  6511.  
  6512.  
  6513.  
  6514.  
  6515.  
  6516.  
  6517.  
  6518.  
  6519.  
  6520.  
  6521.  
  6522.  
  6523.  
  6524.  
  6525.  
  6526.  
  6527.  
  6528.           Chapter III, Screen Control Language                         page 99          Chapter III, Screen Control Language                         page 99
  6529.  
  6530.  
  6531.  
  6532.  
  6533.  
  6534.  
  6535.  
  6536.  
  6537.  
  6538.  
  6539.  
  6540.  
  6541.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6542.  
  6543.  
  6544.                                       Introduction                                      Introduction                                      ____________
  6545.  
  6546.  
  6547.  
  6548.  
  6549.  
  6550.                                The Screen Control Language                               The Screen Control Language
  6551.  
  6552.  
  6553.  
  6554.           SCL  is  accommodated  in  several  TURBO PASCAL Source Library files          SCL
  6555.           which must  be 'included'  in your  application programs  in order to
  6556.           access the constructs they contain.
  6557.  
  6558.           The following  is a functional description of all relevant constructs
  6559.         | contained in these Include Files. 
  6560.  
  6561.           For more details on SCL, including explanations and samples available                              SCL
  6562.           in Appendix A. 
  6563.  
  6564.            
  6565.  
  6566.  
  6567.  
  6568.  
  6569.  
  6570.  
  6571.  
  6572.  
  6573.  
  6574.  
  6575.  
  6576.  
  6577.  
  6578.  
  6579.  
  6580.  
  6581.  
  6582.  
  6583.  
  6584.  
  6585.  
  6586.  
  6587.  
  6588.  
  6589.  
  6590.  
  6591.  
  6592.  
  6593.  
  6594.           Chapter III, Screen Control Language                         page 100          Chapter III, Screen Control Language                         page 100
  6595.  
  6596.  
  6597.  
  6598.  
  6599.  
  6600.  
  6601.  
  6602.  
  6603.  
  6604.  
  6605.  
  6606.  
  6607.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6608.  
  6609.  
  6610.                                         SCL Files                                        SCL Files
  6611.  
  6612.           The following is a brief description of all SCL files.                                                      SCL
  6613.  
  6614.  
  6615.           SCL.TPU :           SCL.TPU : 
  6616.  
  6617.           Contains all SCL definitions and routines. All elements of SCL can be                       SCL
  6618.           accessed from your Turbo Pascal 4  program by  specifying SCL  in the
  6619.           USES statement. 
  6620.  
  6621.           Example:          Example
  6622.  
  6623.           USES CRT,SCL,PRINTER;
  6624.  
  6625.  
  6626.                        
  6627.           SCL.ERR :           SCL.ERR : 
  6628.  
  6629.           This is a basic Error Message File for your programs and contains all
  6630.           SCL internal error messages.  Its  use  is  explained  later  in this
  6631.           manual.
  6632.  
  6633.  
  6634.  
  6635.  
  6636.  
  6637.  
  6638.  
  6639.  
  6640.  
  6641.  
  6642.  
  6643.  
  6644.  
  6645.  
  6646.  
  6647.  
  6648.  
  6649.  
  6650.  
  6651.  
  6652.  
  6653.  
  6654.  
  6655.  
  6656.  
  6657.  
  6658.  
  6659.  
  6660.           Chapter III, Screen Control Language                         page 101          Chapter III, Screen Control Language                         page 101
  6661.  
  6662.  
  6663.  
  6664.  
  6665.  
  6666.  
  6667.  
  6668.  
  6669.  
  6670.  
  6671.  
  6672.  
  6673.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6674.  
  6675.  
  6676.                                 SCL - Global Declarations                                SCL - Global Declarations
  6677.  
  6678.  
  6679.                                  General                                 General
  6680.  
  6681.  
  6682.         | Many  of  SCL's  Global  Constants  are  actually  declared  as typed                           Global  Constants
  6683.         | constants.
  6684.           This was done to allow their alteration during program runtime. 
  6685.         | Despite all their advantages,  Typed Constants  in TURBO  PASCAL also
  6686.           have one slight disadvantage:
  6687.            
  6688.           Since  they  are  are  only  initialized  once,  i.e at the time  the
  6689.           program is  loaded into  memory, irritating  effects can  occur if an
  6690.           application  program  is  compiled  to memory and afterwards run from
  6691.           there more than once. 
  6692.           For this reason it is recommended to compile programs using  SCL to a                                                                       SCL
  6693.           '.EXE' file on disk in order to test them.
  6694.  
  6695.            
  6696.         | The  following  chapters  describe most  of  the  Global Declarations
  6697.         | forming  part  of  SCL,  starting  with  the  Global  Constants   and
  6698.         | Variables and  followed by those  Type declarations which could be of
  6699.           use outside SCL as well.                       SCL
  6700.  
  6701.  
  6702.  
  6703.  
  6704.  
  6705.  
  6706.  
  6707.  
  6708.  
  6709.  
  6710.  
  6711.  
  6712.  
  6713.  
  6714.  
  6715.  
  6716.  
  6717.  
  6718.  
  6719.  
  6720.  
  6721.  
  6722.  
  6723.  
  6724.  
  6725.  
  6726.           Chapter III, Screen Control Language                         page 102          Chapter III, Screen Control Language                         page 102
  6727.  
  6728.  
  6729.  
  6730.  
  6731.  
  6732.  
  6733.  
  6734.  
  6735.  
  6736.  
  6737.  
  6738.  
  6739.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6740.  
  6741.  
  6742.                                  SCL Control Parameters                                 SCL Control Parameters
  6743.  
  6744.           The following parameters define the maximum size of  files etc. Their
  6745.           default settings  are layed  out in  such a  way that  they should be
  6746.           sufficient in most cases.
  6747.  
  6748.           They can cater for up to: 
  6749.  
  6750.                100 Error Messages.
  6751.                400 Field (explanatory) Messages.
  6752.                20  Formats displayed simultaneously.
  6753.  
  6754.           Looking at these figures you can see that only some  special, usually
  6755.           very large applications may require parameter changes.
  6756.  
  6757.           Max_Error_Messages          Max_Error_Messages
  6758.           Declaration: 
  6759.           CONST Max_Error_Messages = 100;
  6760.  
  6761.           Explanation:  
  6762.           The highest allowed user message number.
  6763.           This constant  must be  set to  a value  equal to or greater than the
  6764.           number of records in file <workfile>.ERR. The default  setting allows
  6765.           for about 60 additional user messages, since approximately 40 records
  6766.           are already occupied with system error messages.
  6767.  
  6768.           Max_Input_Messages          Max_Input_Messages
  6769.           Declaration:
  6770.           CONST Max_Input_Messages         = 400;
  6771.  
  6772.           Explanation:  
  6773.         | Contains the maximum number of Field Messages. 
  6774.           This constant must be set to  a value  equal to  or greater  than the
  6775.           number of  records in  file <workfile>.MSG which can be calculated as
  6776.           follows: (Size of file <workfile>.MSG (in bytes) divided by 71) + 1. 
  6777.  
  6778.           Remark:
  6779.           In order to allow for later changes to your formats it is recommended
  6780.           to increase the minimum number calculated as above by at least 50 %.
  6781.  
  6782.           Max_Heap_Screens          Max_Heap_Screens
  6783.           Declaration:
  6784.           CONST Max_Heap_Screens           = 20;
  6785.  
  6786.           Explanation:
  6787.           The maximum  number of  formats which  can be 'stacked' one on top of
  6788.           the other on the display.
  6789.  
  6790.  
  6791.  
  6792.           Chapter III, Screen Control Language                         page 103          Chapter III, Screen Control Language                         page 103
  6793.  
  6794.  
  6795.  
  6796.  
  6797.  
  6798.  
  6799.  
  6800.  
  6801.  
  6802.  
  6803.  
  6804.  
  6805.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6806.  
  6807.  
  6808.                                        File Names                                       File Names
  6809.  
  6810.  
  6811.           The following constants define what file name extensions SCL expects.                                                                   SCL
  6812.           While it  is recommended to leave them at their default settings (i.e
  6813.           compatible  with  SFD),  it  is  still  possible  to  change  them if
  6814.           required.  In  this  case  the  files  created by SFD must be renamed
  6815.           before they can be used  with  the  appropriate  application.  In any
  6816.           case, make  sure that  you don't use extensions which do have special
  6817.           meanings in your system like '.BAK'  (backup file)  or '.PAS' (Pascal
  6818.           source file). 
  6819.  
  6820.  
  6821.           Screenfile_Ext          Screenfile_Ext
  6822.           Declaration:
  6823.           CONST Screenfile_Ext = '.scs';
  6824.  
  6825.           Explanation:
  6826.           File name  extension used  for the format file. Change if a different
  6827.           extension is desired. 
  6828.  
  6829.  
  6830.           Indexfile_Ext          Indexfile_Ext
  6831.           Declaration:
  6832.           CONST Indexfile_Ext = '.sci';
  6833.  
  6834.           Explanation:
  6835.           File name extension to be used for the format index file. Change if a
  6836.           different extension is to be used.
  6837.  
  6838.  
  6839.           Errorfile_Ext          Errorfile_Ext
  6840.           Declaration:
  6841.           CONST Errorfile_Ext = '.err';
  6842.  
  6843.           Explanation:
  6844.           File name extension to be used for the file containing the system and
  6845.           user error messages. Change if a different extension is to be used.
  6846.  
  6847.  
  6848.           Messagefile_Ext          Messagefile_Ext
  6849.           Declaration:
  6850.           CONST Messagefile_Ext = '.msg';
  6851.  
  6852.           Explanation:
  6853.           File name extension to be used  for  the  file  containing  the field
  6854.           messages. Change if a different extension is to be used.
  6855.  
  6856.  
  6857.  
  6858.           Chapter III, Screen Control Language                         page 104          Chapter III, Screen Control Language                         page 104
  6859.  
  6860.  
  6861.  
  6862.  
  6863.  
  6864.  
  6865.  
  6866.  
  6867.  
  6868.  
  6869.  
  6870.  
  6871.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6872.  
  6873.                                  Help System Parameters                                 Help System Parameters
  6874.  
  6875.           Autohelp_Screen          Autohelp_Screen
  6876.           Declaration:
  6877.           CONST Autohelp_Screen = 'autohelp';
  6878.  
  6879.           Explanation:
  6880.         | The name of the format to be used for the Autohelp feature. Change if
  6881.           another format is to be used.
  6882.  
  6883.           Maxerrors          Maxerrors
  6884.           Declaration:
  6885.           CONST Maxerrors : INTEGER  = 3;
  6886.  
  6887.           Explanation:
  6888.           If 'Autohelp_Set'  is  true,  this  value  determines  the  number of
  6889.         | consecutive errors before the Autohelp format is displayed. 
  6890.  
  6891.           Auto_Help_Set          Auto_Help_Set
  6892.           Declaration:
  6893.           CONST Auto_Help_Set : BOOLEAN  = TRUE;
  6894.  
  6895.           Explanation:
  6896.         | If this parameter is TRUE , the Auto_Help feature is enabled, i.e the
  6897.         | format  specified  as  Autohelp_Screen   is  displayed  automatically
  6898.         | whenever Maxerror  consecutive input  errors have been made. If it is
  6899.         | set to FALSE, the Auto_Help feature is disabled. 
  6900.  
  6901.           Code_Help_Field          Code_Help_Field
  6902.           Declaration:
  6903.           CONST Code_Help_Field : INTEGER  = 1060;
  6904.  
  6905.           Explanation:
  6906.         | The key used to display the  Help Format  declared for  the currently
  6907.           active field.
  6908.  
  6909.           Code_Help_Format          Code_Help_Format
  6910.           Declaration:
  6911.           CONST Code_Help_Format : INTEGER  = 1059;
  6912.  
  6913.           Explanation:
  6914.         | The key  used to  display the  Help Format declared for the currently
  6915.           active format.
  6916.  
  6917.           Note:  For information on  how  keyboard  keys  are  coded  see under          Note:  
  6918.         | Keyboard Key Specifications.
  6919.  
  6920.  
  6921.  
  6922.  
  6923.  
  6924.           Chapter III, Screen Control Language                         page 105          Chapter III, Screen Control Language                         page 105
  6925.  
  6926.  
  6927.  
  6928.  
  6929.  
  6930.  
  6931.  
  6932.  
  6933.  
  6934.  
  6935.  
  6936.  
  6937.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  6938.  
  6939.              
  6940.                                      Beep Parameters                                     Beep Parameters
  6941.  
  6942.  
  6943.           The following  parameters allow  to change  pitch and duration of the
  6944.         | Beep, i.e. the sound SCL uses in order to attract the users attention                               SCL
  6945.           because of input errors etc. 
  6946.  
  6947.  
  6948.           Beep_Off          Beep_Off
  6949.  
  6950.           Declaration: 
  6951.           CONST Beep_Off : BOOLEAN = FALSE;
  6952.  
  6953.           Explanation:
  6954.           If set to TRUE SCL will not 'beep' in case of errors.                         SCL
  6955.  
  6956.  
  6957.  
  6958.           Beep_Time          Beep_Time
  6959.  
  6960.           Declaration: 
  6961.           CONST Beep_Time : INTEGER  = 3;
  6962.  
  6963.           Explanation:
  6964.           Duration of the 'beep' in clock ticks (55 ms).
  6965.  
  6966.  
  6967.  
  6968.           Beep_Frequency_1          Beep_Frequency_1
  6969.  
  6970.           Declaration:
  6971.           CONST Beep_Frequency_1 : INTEGER  = 200;
  6972.  
  6973.           Explanation:
  6974.           First frequency used for the 'beep' sound in hertz.
  6975.           The 'beep' consists out of two alternating frequencies.
  6976.  
  6977.  
  6978.  
  6979.           Beep_Frequency_2          Beep_Frequency_2
  6980.  
  6981.           Declaration:
  6982.           CONST Beep_Frequency_2 : INTEGER  = 350;
  6983.  
  6984.           Explanation:
  6985.           Second frequency used for the 'beep' sound in hertz.
  6986.           The 'beep' consists out of two alternating frequencies.
  6987.  
  6988.  
  6989.  
  6990.           Chapter III, Screen Control Language                         page 106          Chapter III, Screen Control Language                         page 106
  6991.  
  6992.  
  6993.  
  6994.  
  6995.  
  6996.  
  6997.  
  6998.  
  6999.  
  7000.  
  7001.  
  7002.  
  7003.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7004.  
  7005.  
  7006.                                      Message Display                                     Message Display
  7007.  
  7008.  
  7009.           The following  two parameters  can be  used to  allow different, user
  7010.           selectable 'Help' levels.
  7011.  
  7012.  
  7013.            
  7014.           Input_Msg_Set          Input_Msg_Set
  7015.  
  7016.           Declaration:
  7017.           CONST Input_Msg_Set : BOOLEAN  = TRUE;
  7018.  
  7019.           Explanation:
  7020.         | If set to FALSE, no Field Messages will be displayed.
  7021.           Can be used to suppress explanatory messages with experienced users.
  7022.  
  7023.  
  7024.  
  7025.  
  7026.           Error_Msg_Set          Error_Msg_Set
  7027.  
  7028.           Declaration:
  7029.           CONST Error_Msg_Set : BOOLEAN  = TRUE;
  7030.  
  7031.           Explanation:
  7032.           If set to FALSE, no messages  will  be  displayed  in  case  of input
  7033.         | errors. SCL will however still 'beep' as long as Beep_Off is FALSE.                   SCL
  7034.  
  7035.  
  7036.  
  7037.  
  7038.  
  7039.  
  7040.  
  7041.  
  7042.  
  7043.  
  7044.  
  7045.  
  7046.  
  7047.  
  7048.  
  7049.  
  7050.  
  7051.  
  7052.  
  7053.  
  7054.  
  7055.  
  7056.           Chapter III, Screen Control Language                         page 107          Chapter III, Screen Control Language                         page 107
  7057.  
  7058.  
  7059.  
  7060.  
  7061.  
  7062.  
  7063.  
  7064.  
  7065.  
  7066.  
  7067.  
  7068.  
  7069.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7070.  
  7071.  
  7072.                                     Field Attributes                                    Field Attributes
  7073.  
  7074.           The following specifications define the blink frequency for constants
  7075.           (see 'Blink' field attribute) as well  as   what characters  are used
  7076.           for the 'Marked' field attribute.
  7077.  
  7078.  
  7079.           Blink_Count          Blink_Count
  7080.  
  7081.           Declaration:
  7082.           CONST Blink_Count : INTEGER  = 0;
  7083.  
  7084.           This count  is incremented each clock tick. A clock tick occurs about
  7085.           18.2 times per second (every 55  ms). Blink_count  can be interogated
  7086.           by user routines. 
  7087.  
  7088.  
  7089.           Timer_Intervall          Timer_Intervall
  7090.  
  7091.           Declaration:
  7092.           CONST Timer_Intervall : INTEGER  = 4;
  7093.  
  7094.           Explanation:
  7095.           Used  as  a  delay  for  the field blinking procedure. Determines the
  7096.           delay after which the  fieldcolor  is  inverted  again.  Decrease for
  7097.           faster and increase for slower blinking.
  7098.  
  7099.  
  7100.           Mark_Field_Left          Mark_Field_Left
  7101.  
  7102.           Declaration:
  7103.           CONST Mark_Field_Left : Byte = 16;
  7104.  
  7105.           Explanation:
  7106.         | The ASCII  code of the character used as the Mark on the left side of
  7107.           the field (see 'Marked' field attribute). 
  7108.  
  7109.  
  7110.           Mark_Field_Right          Mark_Field_Right
  7111.  
  7112.           Declaration:
  7113.           CONST Mark_Field_Right : Byte = 17;
  7114.  
  7115.           Explanation:
  7116.         | The ASCII code of the character used as the Mark on the right side of
  7117.           the field (see 'Marked' field attribute).
  7118.  
  7119.  
  7120.  
  7121.  
  7122.           Chapter III, Screen Control Language                         page 108          Chapter III, Screen Control Language                         page 108
  7123.  
  7124.  
  7125.  
  7126.  
  7127.  
  7128.  
  7129.  
  7130.  
  7131.  
  7132.  
  7133.  
  7134.  
  7135.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7136.  
  7137.  
  7138.                                    Key Specifications                                   Key Specifications
  7139.  
  7140.  
  7141.           The values of all keyboard keys associated with functions are defined
  7142.           as constants in order to be  able to  adapt programs  to non standard
  7143.           keyboards.
  7144.            
  7145.           Their values are calculated as follows:
  7146.  
  7147.                1.   Use  the  decimal  ASCII  code  of  the  key to perform the
  7148.                     appropriate function.
  7149.                2.         |           Add 1000 in case this key creates an extended code,
  7150.                     i.e  one preceeded by an 'ESC' character. 
  7151.  
  7152.  
  7153.  
  7154.           Code_Cancel_Act          Code_Cancel_Act
  7155.  
  7156.           Declaration:
  7157.           CONST Code_Cancel_Act : INTEGER  = 1061;
  7158.  
  7159.           Explanation:
  7160.           The key used to cancel a change to  a 'variable'  and to  restore the
  7161.           original content of it (Default:F3). Modify in case you want some key
  7162.           to perform this action.
  7163.  
  7164.  
  7165.  
  7166.           Code_Abort          Code_Abort
  7167.  
  7168.           Declaration:
  7169.           CONST Code_Abort : INTEGER  = 1068;
  7170.  
  7171.           Explanation:
  7172.           The the key to unconditionally terminate  the current  format in case
  7173.           the   'Abort   Ok'   attribute   is   set  to  'Yes'  in  its  Global
  7174.           specifications. 
  7175.  
  7176.  
  7177.  
  7178.           Code_Escape          Code_Escape
  7179.  
  7180.           Declaration:
  7181.           CONST Code_Escape : INTEGER  = 27;
  7182.  
  7183.           Explanation:
  7184.           The key to terminate a format.
  7185.  
  7186.  
  7187.  
  7188.           Chapter III, Screen Control Language                         page 109          Chapter III, Screen Control Language                         page 109
  7189.  
  7190.  
  7191.  
  7192.  
  7193.  
  7194.  
  7195.  
  7196.  
  7197.  
  7198.  
  7199.  
  7200.  
  7201.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7202.  
  7203.  
  7204.                               Performing 'Edit' functions                                Performing 'Edit' functions
  7205.  
  7206.  
  7207.           CONST  Code_Home        : INTEGER  = 1071;
  7208.           CONST  Code_Tab         : INTEGER  = 9;
  7209.           CONST  Code_Ctrltab     : INTEGER  = 1116;
  7210.           CONST  Code_Rtab        : INTEGER  = 1015;
  7211.           CONST  Code_Return      : INTEGER  = 13;
  7212.           CONST  Code_Left        : INTEGER  = 1075;
  7213.           CONST  Code_Right       : INTEGER  = 1077;
  7214.           CONST  Code_Down        : INTEGER  = 1080;
  7215.           CONST  Code_Up          : INTEGER  = 1072;
  7216.           CONST  Code_End         : INTEGER  = 1079;
  7217.           CONST  Code_Ins         : INTEGER  = 1082;
  7218.           CONST  Code_Del         : INTEGER  = 1083;
  7219.           CONST  Code_Backspace   : INTEGER  = 8;
  7220.           CONST  Code_Pgup        : INTEGER  = 1073;
  7221.           CONST  Code_Pgdown      : INTEGER  = 1081;
  7222.  
  7223.  
  7224.  
  7225.  
  7226.                                       Function Keys                                      Function Keys
  7227.  
  7228.  
  7229.         | The following are the codes of the keys associated with  the Function
  7230.         | Key  Interrupts  (see  'Global  Format  Specifications').  Change  as
  7231.           required for non standard keyboard layouts.
  7232.  
  7233.  
  7234.           CONST  Code_F1          : INTEGER  = 1059;
  7235.           CONST  Code_F2          : INTEGER  = 1060;
  7236.           CONST  Code_F3          : INTEGER  = 1061;
  7237.           CONST  Code_F4          : INTEGER  = 1062;
  7238.           CONST  Code_F5          : INTEGER  = 1063;
  7239.           CONST  Code_F6          : INTEGER  = 1064;
  7240.           CONST  Code_F7          : INTEGER  = 1065;
  7241.           CONST  Code_F8          : INTEGER  = 1066;
  7242.           CONST  Code_F9          : INTEGER  = 1067;
  7243.           CONST  Code_F10         : INTEGER  = 1068;
  7244.  
  7245.  
  7246.  
  7247.  
  7248.  
  7249.  
  7250.  
  7251.  
  7252.  
  7253.  
  7254.           Chapter III, Screen Control Language                         page 110          Chapter III, Screen Control Language                         page 110
  7255.  
  7256.  
  7257.  
  7258.  
  7259.  
  7260.  
  7261.  
  7262.  
  7263.  
  7264.  
  7265.  
  7266.  
  7267.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7268.  
  7269.  
  7270.                                Nationalisation Parameters                               Nationalisation Parameters
  7271.  
  7272.  
  7273.           The following declarations determine the message  to be  displayed in
  7274.           case  of  a  fatal  program  abort initiated by SCL. Change for other
  7275.           languages as required.
  7276.  
  7277.           CONST Fatal_Msg_1 = 'FATAL SCL ERROR: ';
  7278.           CONST Fatal_Msg_2 = 'ERROR NR: ';
  7279.           CONST Fatal_Msg_3 = 'PROGRAM ABORTED.';
  7280.  
  7281.  
  7282.         | The following two  parameters  define  the  valid  input  for Boolean
  7283.         | Variables. Change according to the language used.
  7284.  
  7285.  
  7286.           Code_Yes          Code_Yes
  7287.  
  7288.           Declaration:
  7289.           CONST Code_Yes : INTEGER  = 89;
  7290.  
  7291.           Explanation:
  7292.           The first  letter of  the word  meaning 'Yes' in upper case (Y). Used
  7293.         | for Boolean Fields. Change for other languages.
  7294.  
  7295.  
  7296.           Code_No          Code_No
  7297.  
  7298.           Declaration:
  7299.           CONST Code_No : INTEGER  = 78;
  7300.  
  7301.           Explanation:
  7302.           The first letter of the word meaning 'No' in upper case (N). Used for
  7303.         | Boolean Fields .Change for other languages.
  7304.  
  7305.  
  7306.  
  7307.                               Character sets for Variables                              Character sets for Variables
  7308.  
  7309.  
  7310.           The following constants define the characters permitted to be entered
  7311.           into the  various types  of Variable  fields. Change  as required for
  7312.           national character sets. 
  7313.  
  7314.  
  7315.           CONST  Anything_Set  :  SET  OF Byte = [1..6,8,14..27,32..255]; CONST
  7316.           Integer_Set        : SET OF Byte = [32,43,45,48..57];
  7317.           CONST Real_Set     : SET OF Byte = [32,43,45,46,48..57];
  7318.           CONST Alpha_Set    : SET OF Byte = [32,65..90,97..122,128..167]; 
  7319.  
  7320.           Chapter III, Screen Control Language                         page 111          Chapter III, Screen Control Language                         page 111
  7321.  
  7322.  
  7323.  
  7324.  
  7325.  
  7326.  
  7327.  
  7328.  
  7329.  
  7330.  
  7331.  
  7332.  
  7333.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7334.  
  7335.  
  7336.                              Country Information Parameters                             Country Information Parameters
  7337.  
  7338.           SCL_Country          SCL_Country
  7339.  
  7340.           Declaration:
  7341.           CONST Scl_Country : INTEGER = 0;  
  7342.  
  7343.           Explanation:
  7344.           The country information to be used for SCL. If this  parameter is set
  7345.           to  0  (zero)  SCL  uses  the  country  specified  in  the  computers
  7346.           CONFIG.SYS file. If another countries informations are to be used set
  7347.           this constant  to the  appropriate value. (Example : 49 for germany).
  7348.           The country codes available  are described  in your  DOS manual under
  7349.           the COUNTRY command. 
  7350.  
  7351.           SCL interrogates  the Country  informations during initialization and
  7352.           sets up the following variables accordingly: 
  7353.  
  7354.  
  7355.           Country          Country
  7356.  
  7357.           Declaration:
  7358.           VAR Country : INTEGER;
  7359.  
  7360.           Explanation:
  7361.           Contains the country code of the country currently being used by SCL.                                                                           SCL
  7362.           This  is  either  the  Country  code  specified  in  CONFIG.SYS or if
  7363.           'SCL_Country' (see above) is set to a value other than 0 (zero) it is
  7364.           set equal to this.
  7365.  
  7366.  
  7367.           Date_Format          Date_Format
  7368.  
  7369.           Declaration:
  7370.           VAR Date_Format : INTEGER;
  7371.  
  7372.           Explanation:
  7373.           Determines the date format being assumed by SCL's date formatting and
  7374.           check routines. 0 means MMDD and 1 means DDMM format. 
  7375.  
  7376.  
  7377.           Date_Separator          Date_Separator
  7378.  
  7379.           Declaration:
  7380.           VAR Date_Separator : CHAR;
  7381.  
  7382.           Explanation:
  7383.           The character to be used as a separator between days, months and year
  7384.           by SCL's date formatting routines. 
  7385.  
  7386.           Chapter III, Screen Control Language                         page 112          Chapter III, Screen Control Language                         page 112
  7387.  
  7388.  
  7389.  
  7390.  
  7391.  
  7392.  
  7393.  
  7394.  
  7395.  
  7396.  
  7397.  
  7398.  
  7399.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7400.  
  7401.  
  7402.           Time_Separator          Time_Separator
  7403.  
  7404.           Declaration:
  7405.           VAR Time_Separator : CHAR;
  7406.  
  7407.           Explanation:
  7408.           The character  to be used as a separator between hours and minutes by
  7409.           SCL's time formatting routines.
  7410.            
  7411.  
  7412.           Currency          Currency
  7413.  
  7414.           Declaration:
  7415.           VAR Currency : String10;
  7416.  
  7417.           Explanation:
  7418.           Contains the name or symbol of  the  currency  of  the  country being
  7419.           assumed by SCL (see above). 
  7420.  
  7421.  
  7422.  
  7423.                        
  7424.           Note:   Since SCL's  own date  and time formatting routines are using          Note:
  7425.           the  above    informations,  they  automatically  adapt  to different
  7426.           countries and  don't therefore  have to be nationalized manually. The
  7427.           same principle should be applied to user written application programs
  7428.           wherever possible. 
  7429.  
  7430.  
  7431.  
  7432.  
  7433.  
  7434.  
  7435.  
  7436.  
  7437.  
  7438.  
  7439.  
  7440.  
  7441.  
  7442.  
  7443.  
  7444.  
  7445.  
  7446.  
  7447.  
  7448.  
  7449.  
  7450.  
  7451.  
  7452.           Chapter III, Screen Control Language                         page 113          Chapter III, Screen Control Language                         page 113
  7453.  
  7454.  
  7455.  
  7456.  
  7457.  
  7458.  
  7459.  
  7460.  
  7461.  
  7462.  
  7463.  
  7464.  
  7465.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7466.  
  7467.  
  7468.                                  SCL Control Parameters                                 SCL Control Parameters
  7469.  
  7470.  
  7471.           Progpath          Progpath
  7472.  
  7473.           Declaration:
  7474.           VAR Progpath : String80;
  7475.  
  7476.           Explanation:
  7477.           Progpath holds the complete path description (including Drive) of the
  7478.           subdirectory which was active  when SCL  was initialized,  i.e at the
  7479.           time,  the  procedure  'Select_Format_File' was called. SCL remembers
  7480.           this subdirectory because it expects to find its files there, even if
  7481.           the active  subdirectory was  changed during  program execution. This
  7482.           variable is quite useful to find other, non SCL files  if they reside
  7483.           in the same directory as the program itself.
  7484.                        
  7485.           Example:          Example:
  7486.           Assumed a  program using  SCL is started from directory '\Appl\Mydir'
  7487.           on drive C. If SCL has been initialized then 'Progpath'  contains the
  7488.           following     information:     'C:\Appl\Mydir\'.     The    statement
  7489.           'Assign(myfile,Progpath + Example.Fil)' now will assign the following
  7490.           file name to 'Myfile':
  7491.            
  7492.           c:\Appl\Mydir\Example.Fil 
  7493.                        
  7494.           Note:  The information contained in 'Progpath' must not be changed.           Note:
  7495.  
  7496.  
  7497.                        
  7498.           No_Wrap          No_Wrap
  7499.  
  7500.           Declaration:
  7501.           CONST No_Wrap : BOOLEAN = FALSE;
  7502.  
  7503.           Explanation:
  7504.         | If  No_Wrap  is  set  to  false,  the  cursor  wraparound  feature is
  7505.           controlled individually  for  each  format  by  its  global attribute
  7506.           'Wraparound Ok'.
  7507.         | In case  No_Wrap is  set to  TRUE, this will override the appropriate
  7508.           specifications and cursor wraparound  will therefore  be disabled for
  7509.           all formats. 
  7510.           This  Option  has  been  provided  to  adapt SCL written applications                                                       SCL
  7511.           easily to 'Mouse' operation. 
  7512.         | If a program is  operated with  a keyboard  Cursor Wraparound  can be
  7513.           very helpful,  especially on  large formats. On the other hand , if a
  7514.         | 'Mouse' is being  used,  Cursor  Wraparound  can  be  very confusing.
  7515.         | No_Wrap allows to choose the optimum in both cases.
  7516.  
  7517.  
  7518.           Chapter III, Screen Control Language                         page 114          Chapter III, Screen Control Language                         page 114
  7519.  
  7520.  
  7521.  
  7522.  
  7523.  
  7524.  
  7525.  
  7526.  
  7527.  
  7528.  
  7529.  
  7530.  
  7531.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7532.  
  7533.  
  7534.                                      Format Pointers                                     Format Pointers
  7535.  
  7536.  
  7537.           S_Ptr          S_Ptr
  7538.  
  7539.           Declaration:
  7540.           VAR S_Ptr : INTEGER;
  7541.  
  7542.           Explanation:
  7543.           S_Ptr controls  the format stack and always points to its top, i.e to
  7544.           the currently active format.  If a  format is  loaded to  the Heap by
  7545.         | Select_Format, S_Ptr  is incremented  and once the format is finished
  7546.         | it is decremented by Format_Done.
  7547.         | If S_Ptr is 0 (zero) after Format_Done has decremented it  this means
  7548.           that  all  formats  have  been  finished  and the screen is therefore
  7549.           cleared.
  7550.           Other values indicate that there are still one or more formats on the
  7551.         | stack which have not yet been finished. The one S_Ptr is now pointing
  7552.           to is therefore restored and its handling can  continue where  it was
  7553.           interrupted before.
  7554.  
  7555.                        
  7556.           Note:   For more details on the above matter refer to 'SCL Procedures          Note:
  7557.           and functions' later in this manual. 
  7558.  
  7559.  
  7560.  
  7561.           R_Ptr          R_Ptr
  7562.  
  7563.           Declaration:
  7564.           VAR R_Ptr : INTEGER;
  7565.  
  7566.           Explanation:
  7567.         | R_Ptr is a Variable mainly used by the routines R_Cont, G_Cont, R_Sel
  7568.         | and G_Sel.
  7569.           It points  to the  format to be read from. R_Ptr is adjusted equal to
  7570.         | S_Ptr by the routine  Handle_Format.  This  means,  R_Ptr  will still
  7571.           point to a format, even if this format is not any longer active. 
  7572.           For a detailed description of this mechanism refer to the description
  7573.           of the above mentioned procedures. 
  7574.  
  7575.  
  7576.  
  7577.  
  7578.  
  7579.  
  7580.  
  7581.  
  7582.  
  7583.  
  7584.           Chapter III, Screen Control Language                         page 115          Chapter III, Screen Control Language                         page 115
  7585.  
  7586.  
  7587.  
  7588.  
  7589.  
  7590.  
  7591.  
  7592.  
  7593.  
  7594.  
  7595.  
  7596.  
  7597.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7598.  
  7599.  
  7600.           W_Ptr          W_Ptr
  7601.  
  7602.           Declaration:
  7603.           VAR W_Ptr : INTEGER;
  7604.  
  7605.           Explanation:
  7606.         | W_Ptr is mainly used  by the  routines W_Cont,  C_Cont and  W_Sel. It
  7607.           points to  the format  currently being  written to  W_Ptr is normally
  7608.         | equal to S_Ptr. This means that Format fields can be  written into as
  7609.         | soon as the format has been loaded by Select_Format and as long as it
  7610.         | has not been finished by Format_Done.
  7611.           For a detailed description of this mechanism see Appendix A.                                                                        
  7612.                        
  7613.                        
  7614.                        
  7615.  
  7616.  
  7617.  
  7618.  
  7619.  
  7620.  
  7621.  
  7622.  
  7623.  
  7624.  
  7625.  
  7626.  
  7627.  
  7628.  
  7629.  
  7630.  
  7631.  
  7632.  
  7633.  
  7634.  
  7635.  
  7636.  
  7637.  
  7638.  
  7639.  
  7640.  
  7641.  
  7642.  
  7643.  
  7644.  
  7645.  
  7646.  
  7647.  
  7648.  
  7649.  
  7650.           Chapter III, Screen Control Language                         page 116          Chapter III, Screen Control Language                         page 116
  7651.  
  7652.  
  7653.  
  7654.  
  7655.  
  7656.  
  7657.  
  7658.  
  7659.  
  7660.  
  7661.  
  7662.  
  7663.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7664.  
  7665.                        
  7666.                                Format Handling Parameters                               Format Handling Parameters
  7667.  
  7668.  
  7669.         | Many of the following parameters are  intended  to  be  used  in User
  7670.         | Interrupt  Procedures  during  format handling. Detailed descriptions
  7671.           and examples of user  interrupt handling  procedures can  be found in
  7672.           Appendix A. 
  7673.  
  7674.  
  7675.           Active_Field          Active_Field
  7676.  
  7677.           Declaration:
  7678.           VAR Active_Field : INTEGER;
  7679.  
  7680.           Explanation:
  7681.           Active_Field  always   points  to   the  field   being  processed  by
  7682.         | Handle_Format. If a format has no fields, 'Active_Field'  is equal to
  7683.           0 (zero).
  7684.           This  Variable  can  be  interrogated  by  user procedures, typically
  7685.         | during User Interrupt handling.
  7686.  
  7687.  
  7688.  
  7689.           Char_Code          Char_Code
  7690.  
  7691.           Declaration:
  7692.           VAR Char_Code : INTEGER;
  7693.  
  7694.           Explanation:
  7695.           Char_Code  contains  the  input  character  last   fetched  from  the
  7696.           keybuffer by Handle_Format.                       Handle_Format
  7697.           User interrupt  procedures can interrogate or modify 'Char_Code'. If,
  7698.           for example in case of a  User Function  Key Interrupt  the statement                                    User Function  Key Interrupt
  7699.           'Char_Code:=Code_Noop' is  executed, Handle_Format  then ignores this
  7700.           key. 
  7701.  
  7702.  
  7703.           Glb_Error          Glb_Error
  7704.  
  7705.           Declaration:
  7706.           VAR Glb_Error : INTEGER;
  7707.  
  7708.           Explanation:
  7709.           This Variable is used by external procedures normally invoked by User                                                                           User
  7710.           Interrupts to return an error description to 'Handle_Format'.          Interrupts 
  7711.           In  case  the  external  procedure  returns  a  value  other  than  0
  7712.           'Handle_Format' initiates an error routine using the error message to
  7713.           which 'Glb_Err' points. 
  7714.  
  7715.  
  7716.           Chapter III, Screen Control Language                         page 117          Chapter III, Screen Control Language                         page 117
  7717.  
  7718.  
  7719.  
  7720.  
  7721.  
  7722.  
  7723.  
  7724.  
  7725.  
  7726.  
  7727.  
  7728.  
  7729.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7730.  
  7731.  
  7732.                                Format Handling Parameters                               Format Handling Parameters
  7733.  
  7734.  
  7735.           The  following  variables  are  intended  to  be interrogated by user
  7736.           written SCL interrupt handling  procedures to  determine the  type of
  7737.           interrupt having  occurred. They  are all controlled by the procedure
  7738.           Handle_Format.          Handle_Format
  7739.           Refer to Appendix A for more details on how to use them. 
  7740.  
  7741.  
  7742.           User_Function          User_Function
  7743.  
  7744.           Declaration:
  7745.           VAR User_Function : BOOLEAN;
  7746.  
  7747.           Explanation:
  7748.           This variable  is  TRUE  whenever  either  a  User  Function  Key was                                                        User  Function  Key
  7749.           depressed or  any other  key was hit during input to a field with the
  7750.           'CharInt' parameter set to TRUE. 
  7751.           For details  on  the  above  mentioned  parameters  refer  to 'Format
  7752.           Specifications' in the SFD part of this manual.                                  SFD
  7753.  
  7754.  
  7755.           Begin_Of_Field          Begin_Of_Field
  7756.  
  7757.           Declaration:
  7758.           VAR Begin_Of_Field : BOOLEAN;
  7759.  
  7760.           Explanation:
  7761.           This variable is TRUE whenever a new field is due to be entered.
  7762.  
  7763.  
  7764.           End_Of_Field          End_Of_Field
  7765.  
  7766.           Declaration:
  7767.           VAR End_Of_Field : BOOLEAN;
  7768.  
  7769.           Explanation:
  7770.           This variable  is TRUE  whenever a  field is due to be left and after
  7771.           all SCL internal checks specified for the appropriate field have been
  7772.           successfully completed. 
  7773.  
  7774.  
  7775.  
  7776.  
  7777.  
  7778.  
  7779.  
  7780.  
  7781.  
  7782.           Chapter III, Screen Control Language                         page 118          Chapter III, Screen Control Language                         page 118
  7783.  
  7784.  
  7785.  
  7786.  
  7787.  
  7788.  
  7789.  
  7790.  
  7791.  
  7792.  
  7793.  
  7794.  
  7795.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7796.  
  7797.  
  7798.           End_Of_Format          End_Of_Format
  7799.  
  7800.           Declaration:
  7801.           VAR End_Of_Format : BOOLEAN;
  7802.  
  7803.           Explanation:
  7804.           This variable  is TRUE  whenever a format is due to be left and after
  7805.           all SCL internal  checks  have  been  successfully  completed. Please
  7806.           notice that the Abort feature bypasses this interrupt.                          Abort
  7807.  
  7808.  
  7809.           Checkrequired          Checkrequired
  7810.  
  7811.           Declaration:
  7812.           VAR Checkrequired : Boolean;
  7813.  
  7814.           Explanation:
  7815.           At the  time of  a End_Of_Field interrupt, 'checkrequired' is true if                             End_Of_Field
  7816.           the field has been  changed and  false if  it hasn't. 'Checkrequired'
  7817.           should be  interrogated by an external field input check procedure to
  7818.           find out  whether  a  check  has  to  be  done  or  not.  For further
  7819.           information see Appendix A under 'User Interrupt Procedures'. 
  7820.  
  7821.  
  7822.  
  7823.  
  7824.  
  7825.  
  7826.  
  7827.  
  7828.  
  7829.  
  7830.  
  7831.  
  7832.  
  7833.  
  7834.  
  7835.  
  7836.  
  7837.  
  7838.  
  7839.  
  7840.  
  7841.  
  7842.  
  7843.  
  7844.  
  7845.  
  7846.  
  7847.  
  7848.           Chapter III, Screen Control Language                         page 119          Chapter III, Screen Control Language                         page 119
  7849.  
  7850.  
  7851.  
  7852.  
  7853.  
  7854.  
  7855.  
  7856.  
  7857.  
  7858.  
  7859.  
  7860.  
  7861.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7862.  
  7863.  
  7864.                                 Screen related Parameters                                Screen related Parameters
  7865.  
  7866.  
  7867.           The  following  variables  can  be  interrogated by user programs but
  7868.           should always be left unchanged.
  7869.  
  7870.           Screen_Mode          Screen_Mode
  7871.  
  7872.           Declaration:
  7873.           VAR Screen_Mode : Byte;
  7874.  
  7875.           Explanation:
  7876.           Screen_Mode holds information about what display adapter the computer
  7877.           is currently  working with  and what  mode it  is in.  Since SCL only
  7878.           works in 80 column text mode, the possible values of  Screen_Mode and                                                                Screen_Mode
  7879.           their meaning are:
  7880.  
  7881.                2 : CG Adapter; 80 Columns Text ; No Color.
  7882.                3 : CG Adapter; 80 Columns Text ; With Color.
  7883.                7 : Monochrome (or Hercules) Adapter; 80 Columns Text.
  7884.  
  7885.  
  7886.  
  7887.           Mono_Adapter          Mono_Adapter
  7888.  
  7889.           Declaration:
  7890.           VAR Mono_Adapter : BOOLEAN;
  7891.  
  7892.           Explanation:
  7893.           Mono_Adapter is  true whenever  the computer  is using the Monochrome
  7894.           Adapter.
  7895.           The status of 'Mono_Adapter' decides to which display  memory address
  7896.           SCL writes.
  7897.  
  7898.  
  7899.  
  7900.           Color_True           Color_True
  7901.  
  7902.           Declaration:
  7903.           VAR Color_True : BOOLEAN;
  7904.  
  7905.           Explanation: 
  7906.           Color_True is set if Screen_Mode is equal to 3.                                Screen_Mode
  7907.           The status  of Color_True determines which set of field attributes is
  7908.           to be used.
  7909.  
  7910.  
  7911.  
  7912.  
  7913.  
  7914.           Chapter III, Screen Control Language                         page 120          Chapter III, Screen Control Language                         page 120
  7915.  
  7916.  
  7917.  
  7918.  
  7919.  
  7920.  
  7921.  
  7922.  
  7923.  
  7924.  
  7925.  
  7926.  
  7927.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7928.  
  7929.  
  7930.                                 Format related Parameters                                Format related Parameters
  7931.  
  7932.  
  7933.           Xoff          Xoff
  7934.  
  7935.           Declaration:
  7936.           VAR Xoff : INTEGER;
  7937.  
  7938.           Explanation:
  7939.           Xoff holds the horizontal offset of  the currently  active format. If
  7940.           for example  Xoff is  equal to  5, then  the upper left corner of the
  7941.           currently active format starts at column 6 on the screen.
  7942.  
  7943.  
  7944.  
  7945.           Yoff          Yoff
  7946.  
  7947.           Declaration:
  7948.           VAR Yoff : INTEGER;
  7949.  
  7950.           Explanation:
  7951.           Yoff holds the vertical offset of the currently active format. If for
  7952.           example  Yoff  is  equal  to  3,  then  the  upper left corner of the
  7953.           currently active format starts at row 4. 
  7954.  
  7955.  
  7956.  
  7957.  
  7958.  
  7959.  
  7960.  
  7961.  
  7962.  
  7963.  
  7964.  
  7965.  
  7966.  
  7967.  
  7968.  
  7969.  
  7970.  
  7971.  
  7972.  
  7973.  
  7974.  
  7975.  
  7976.  
  7977.  
  7978.  
  7979.  
  7980.           Chapter III, Screen Control Language                         page 121          Chapter III, Screen Control Language                         page 121
  7981.  
  7982.  
  7983.  
  7984.  
  7985.  
  7986.  
  7987.  
  7988.  
  7989.  
  7990.  
  7991.  
  7992.  
  7993.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  7994.  
  7995.  
  7996.                             Background Processing Parameters                            Background Processing Parameters
  7997.  
  7998.  
  7999.           LP_Background_Pointer          LP_Background_Pointer
  8000.  
  8001.           Declaration:
  8002.           VAR LP_Background_Pointer : POINTER;
  8003.  
  8004.           Explanation:
  8005.           This Variable is a pointer to the procedure to be  invoked by  SCL as
  8006.           the low priority background task.
  8007.  
  8008.  
  8009.           Example:          Example
  8010.  
  8011.           The  following  statement  would  cause  SCL  to  perform  Myproc  as
  8012.           background task:
  8013.  
  8014.           LP_Background_Pointer:=@Myproc;
  8015.  
  8016.  
  8017.  
  8018.           HP_Background_Pointer          HP_Background_Pointer
  8019.  
  8020.           Declaration:
  8021.           VAR HP_Background_Pointer : POINTER;
  8022.  
  8023.           Explanation:
  8024.           This Variable is a pointer to the procedure to be  invoked by  SCL as
  8025.           the high priority background task.
  8026.  
  8027.  
  8028.           Example:
  8029.           The following  statement would  cause SCL  to perform  Myproc as high
  8030.           priority background task:
  8031.  
  8032.           HP_Background_Pointer:=@Myproc;
  8033.  
  8034.  
  8035.  
  8036.           Note:  SCLs background tasking  feature  is  explained  in  detail in          Note:
  8037.           Appendix A.
  8038.            
  8039.  
  8040.  
  8041.  
  8042.  
  8043.  
  8044.  
  8045.  
  8046.           Chapter III, Screen Control Language                         page 122          Chapter III, Screen Control Language                         page 122
  8047.  
  8048.  
  8049.  
  8050.  
  8051.  
  8052.  
  8053.  
  8054.  
  8055.  
  8056.  
  8057.  
  8058.  
  8059.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8060.  
  8061.  
  8062.                                  Miscellaneous Parameters                                 Miscellaneous Parameters
  8063.  
  8064.  
  8065.           Glb_Status          Glb_Status
  8066.  
  8067.           Declaration:
  8068.           VAR Glb_Status : INTEGER;
  8069.  
  8070.           Explanation:
  8071.           This   Variable   is   a   status  count  controlling  the  procedure
  8072.           'Handle_Format' and carries Information  about the  present status of
  8073.           the format handling process. There is normally no need to interrogate
  8074.           Glb_Status itself, since SCL provides a comprehensive set  of Boolean          Glb_Status               SCL
  8075.           variables  for   this  purpose.  Please  refer  to  'Format  Handling
  8076.           Parameters' for details. 
  8077.           Glb_Status should not be changed by user routines.
  8078.  
  8079.  
  8080.  
  8081.           Glb_Ok          Glb_Ok
  8082.  
  8083.           Declaration:
  8084.           VAR Glb_Ok : BOOLEAN;
  8085.  
  8086.           Explanation:
  8087.           Glb_Ok is set to FALSE by some SCL  procedures and  functions to flag
  8088.           errors  during  their  execution.  It  can  be  interrogated  by user
  8089.           programs  to  make  sure  that  these  procedures  did  not encounter
  8090.           problems  during  their  execution.  Details  of the conditions under
  8091.           which Glb_Ok is set to FALSE can be found in the descriptions  of the
  8092.           appropriate procedures and functions. 
  8093.  
  8094.  
  8095.  
  8096.           Format_Aborted          Format_Aborted
  8097.  
  8098.           Declaration:
  8099.           VAR Format_Aborted : BOOLEAN;
  8100.  
  8101.           Explanation:
  8102.           A  boolean   variable  which   is  set   to  TRUE  by  the  procedure
  8103.           Handle_Format to indicate to succeding procedures  that a  format has          Handle_Format
  8104.           been  terminated  via  the  Abort  key and that they should therefore                                      Abort  key
  8105.           ignore the data having been entered  so  far  into  this  format (and
  8106.           which is likely to be incomplete, anyway). 
  8107.  
  8108.  
  8109.  
  8110.  
  8111.  
  8112.           Chapter III, Screen Control Language                         page 123          Chapter III, Screen Control Language                         page 123
  8113.  
  8114.  
  8115.  
  8116.  
  8117.  
  8118.  
  8119.  
  8120.  
  8121.  
  8122.  
  8123.  
  8124.  
  8125.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8126.  
  8127.  
  8128.                                 Global Type Declarations                                Global Type Declarations
  8129.  
  8130.  
  8131.           The following  SCL TYPE declarations are not limited to SCL, they are                             TYPE
  8132.           of rather universal use in a TURBO PASCAL program and can be  used in
  8133.           other  parts   of  the   application  program   as  well.  More  type
  8134.           declarations inluding the declarations for the SCL files can be found                                                         SCL
  8135.           in the file SCL.DOC.
  8136.  
  8137.  
  8138.  
  8139.  
  8140.  
  8141.           TYPE String128: STRING[128];
  8142.           TYPE String80 : STRING[80];
  8143.           TYPE String70 : STRING[70];
  8144.           TYPE String40 : STRING[40];
  8145.           TYPE String20 : STRING[20];
  8146.           TYPE String13 : STRING[13];
  8147.           TYPE String10 : STRING[10];
  8148.  
  8149.  
  8150.  
  8151.  
  8152.  
  8153.  
  8154.  
  8155.  
  8156.  
  8157.  
  8158.  
  8159.  
  8160.  
  8161.  
  8162.  
  8163.  
  8164.  
  8165.  
  8166.  
  8167.  
  8168.  
  8169.  
  8170.  
  8171.  
  8172.  
  8173.  
  8174.  
  8175.  
  8176.  
  8177.  
  8178.           Chapter III, Screen Control Language                         page 124          Chapter III, Screen Control Language                         page 124
  8179.  
  8180.  
  8181.  
  8182.  
  8183.  
  8184.  
  8185.  
  8186.  
  8187.  
  8188.  
  8189.  
  8190.  
  8191.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8192.  
  8193.  
  8194.                                 Procedures and Functions                                Procedures and Functions
  8195.  
  8196.  
  8197.           Introduction          Introduction
  8198.  
  8199.  
  8200.           The  following  chapters  describe  all  SCL procedures and functions
  8201.           intended to be accessed by user  programs in  logical sequence. While
  8202.           the routines  described here actually only represent a small fraction
  8203.           of the total number of the  SCL routines  being available,  they will
  8204.           enable you to perform all necessary operations.
  8205.           If  you  are  an  experienced  SCL  programmer,  you may come along a
  8206.           occasion where you want to access  a low  level routine  directly for
  8207.           some reason. 
  8208.           While nothing  is actually  preventing you  from doing so, you should
  8209.           take extreme care not to interfere  with SCL.  In addition,  be aware
  8210.           that most  of these  low level  routines are, usually for performance
  8211.           reasons, not protected against  invalid parameters  and may therefore
  8212.           cause runtime errors if you pass such data to them.
  8213.  
  8214.           As a general rule, don't use any undocumented SCL routines unless you          As a general rule, don't use any undocumented SCL routines unless you
  8215.           really know exactly what you are doing.          really know exactly what you are doing.
  8216.  
  8217.  
  8218.  
  8219.  
  8220.                        
  8221.           Note:  In Appendix B you can find a complete alphabethic list  of all          Note:
  8222.           SCL  routines  together  with  brief  comments  on  their purpose and
  8223.           restrictions. 
  8224.  
  8225.  
  8226.  
  8227.  
  8228.  
  8229.  
  8230.  
  8231.  
  8232.  
  8233.  
  8234.  
  8235.  
  8236.  
  8237.  
  8238.  
  8239.  
  8240.  
  8241.  
  8242.  
  8243.  
  8244.           Chapter III, Screen Control Language                         page 125          Chapter III, Screen Control Language                         page 125
  8245.  
  8246.  
  8247.  
  8248.  
  8249.  
  8250.  
  8251.  
  8252.  
  8253.  
  8254.  
  8255.  
  8256.  
  8257.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8258.  
  8259.  
  8260.                                 Entering and leaving SCL                                Entering and leaving SCL
  8261.  
  8262.  
  8263.           PROCEDURE Select_Format_File(Filename:String10);          PROCEDURE Select_Format_File(Filename:String10);
  8264.  
  8265.           This procedure  should  be  the  first  SCL  routine  performed  in a
  8266.           program.
  8267.           It first  checks the  present screen mode to ensure that it is one of
  8268.           the 80 character text modes. 
  8269.           Then it opens the screenfile indicated by 'Filename' (<Filename>.SCS)
  8270.           as well as the Index file (<Filename>.SCI) belonging to it.
  8271.           The index  file is checked in order to ensure that it is sorted. Then
  8272.           the field message file (<Filename>.MSG and,  if available,  the error
  8273.           message file  (<Filename>.ERR) are loaded into the Heap. Finally some
  8274.           SCL variables are initialized and the screen is cleared.
  8275.           If errors are encountered during this process, SCL  halts the program
  8276.           and displays a message indicating the reason for the abort. 
  8277.  
  8278.                        
  8279.           Note:   The parameter 'Filename' must be specified without extension.          Note:
  8280.           It is recommended to set the screen mode  to the  desired value using
  8281.           the Turbo Pascal Construct 'TextMode' before SCL is initialized since
  8282.           SCL aborts the program if the mode is wrong. 
  8283.  
  8284.  
  8285.  
  8286.           PROCEDURE Close_Formats;          PROCEDURE Close_Formats;
  8287.  
  8288.           This procedure is the last SCL routine to be performed in a program.
  8289.           It frees all space previously occupied by SCL in the Heap, closes the                                                               Heap
  8290.           screen files,  clears the  screen and  finally restores the cursor to
  8291.           its normal shape.
  8292.  
  8293.  
  8294.  
  8295.           On the next page you find an  example  of  the  basic  skeleton  of a
  8296.           program using SCL routines.
  8297.  
  8298.  
  8299.  
  8300.  
  8301.  
  8302.  
  8303.  
  8304.  
  8305.  
  8306.  
  8307.  
  8308.  
  8309.  
  8310.           Chapter III, Screen Control Language                         page 126          Chapter III, Screen Control Language                         page 126
  8311.  
  8312.  
  8313.  
  8314.  
  8315.  
  8316.  
  8317.  
  8318.  
  8319.  
  8320.  
  8321.  
  8322.  
  8323.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8324.  
  8325.  
  8326.                                Structure of a SCL Program                               Structure of a SCL Program                               
  8327.  
  8328.  
  8329.           PROGRAM EXAMPLE;
  8330.  
  8331.  
  8332.           USES SCL; {make SCL accessible}
  8333.  
  8334.           {User declarations, 
  8335.            procedures and functions }
  8336.  
  8337.  
  8338.           BEGIN; {of main body of program example}
  8339.  
  8340.            Select_Format_File('exforms'); {This is the first SCL statement
  8341.                                            in any program. It loads the
  8342.                                            necessary files and initializes
  8343.                                            SCL.}
  8344.                 
  8345.  
  8346.              {main program}
  8347.  
  8348.  
  8349.  
  8350.             Close_Formats;  {Last SCL statement in any program. 
  8351.                              It closes all SCL files and clears the screen} 
  8352.  
  8353.           END;  {of main body of program example}
  8354.  
  8355.  
  8356.  
  8357.  
  8358.  
  8359.  
  8360.  
  8361.  
  8362.  
  8363.  
  8364.  
  8365.  
  8366.  
  8367.  
  8368.  
  8369.  
  8370.  
  8371.  
  8372.  
  8373.  
  8374.  
  8375.  
  8376.           Chapter III, Screen Control Language                         page 127          Chapter III, Screen Control Language                         page 127
  8377.  
  8378.  
  8379.  
  8380.  
  8381.  
  8382.  
  8383.  
  8384.  
  8385.  
  8386.  
  8387.  
  8388.  
  8389.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8390.  
  8391.  
  8392.                              Loading and displaying formats                             Loading and displaying formats                       
  8393.  
  8394.  
  8395.           PROCEDURE Select_Format(Fname:String10);          PROCEDURE Select_Format(Fname:String10);
  8396.  
  8397.           Select_Format is the first procedure to be called in order to display
  8398.           and handle a format. 
  8399.           It reads the description of the format indicated by 'Fname'  from the
  8400.           format file and loads it into memory. 
  8401.           If another  format is currently being processed and not yet finished,
  8402.           its status is saved in the stack for later recovery  once 'Fname' has
  8403.           been finished.
  8404.           Since  'Select_Format'  modifies  the  'W_Ptr'  to  point  to the new
  8405.           format, its fields can now be 'prefilled' if necessary.
  8406.  
  8407.  
  8408.  
  8409.           PROCEDURE Display_Format(Xoffset,Yoffset:INTEGER);          PROCEDURE Display_Format(Xoffset,Yoffset:INTEGER);
  8410.  
  8411.           Once a format has been 'selected' using procedure  'Select_Format' it
  8412.           is  displayed  on  the  screen  with 'Display_Format'. In addition to
  8413.           display the format, all its fields are initialized according to their
  8414.           specifications  and  the  cursor  is placed into the first accessible
  8415.           field (Cursor Home). If there is no field  on the  format, the cursor
  8416.           is made invisible.
  8417.           Display_Format  requires  two  parameters:  Xoffset and Yoffset. They
  8418.           define where on the screen the upper left corner of the new format is
  8419.           to  be  positioned.  Both  values  are zero based, since they specify
  8420.           offsets counted from the upper left corner of the screen  rather than
  8421.           absolute positions.  Therefore if for example Xoffset is specified as                                                        Xoffset
  8422.           '10' and Yoffset as '0' the format will be displayed  with it's upper
  8423.           left corner at Row 1 (the first row), Column 11. 
  8424.  
  8425.           Example:          Example
  8426.  
  8427.            
  8428.           PROCEDURE Bring_Up_Myformat;
  8429.           BEGIN;
  8430.             Select_Format('Myformat'); {Loads 'Myformat' into Memory}   
  8431.             Display_Format(0,0);    {displays  it  starting  at the upper left}
  8432.           END;                    {corner of the screen}
  8433.  
  8434.  
  8435.  
  8436.  
  8437.  
  8438.  
  8439.  
  8440.  
  8441.  
  8442.           Chapter III, Screen Control Language                         page 128          Chapter III, Screen Control Language                         page 128
  8443.  
  8444.  
  8445.  
  8446.  
  8447.  
  8448.  
  8449.  
  8450.  
  8451.  
  8452.  
  8453.  
  8454.  
  8455.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8456.  
  8457.  
  8458.           Note:  It is user responsibility to ensure  that the  space specified          Note:
  8459.           by  Xoffset  and  Yoffset  is  large  enough to hold the format to be              Xoffset       Yoffset
  8460.           displayed.
  8461.           If the space specified is found  to  be  to  small,  a  'Fatal Error'
  8462.           halting the program will result.
  8463.           Therefore it  is recommended  to preferably use the functions 'X_Max'
  8464.           and 'Y_Max' wherever possible to specify offsets.
  8465.           For details see overleaf.
  8466.  
  8467.  
  8468.  
  8469.  
  8470.  
  8471.  
  8472.  
  8473.  
  8474.  
  8475.  
  8476.  
  8477.  
  8478.  
  8479.  
  8480.  
  8481.  
  8482.  
  8483.  
  8484.  
  8485.  
  8486.  
  8487.  
  8488.  
  8489.  
  8490.  
  8491.  
  8492.  
  8493.  
  8494.  
  8495.  
  8496.  
  8497.  
  8498.  
  8499.  
  8500.  
  8501.  
  8502.  
  8503.  
  8504.  
  8505.  
  8506.  
  8507.  
  8508.           Chapter III, Screen Control Language                         page 129          Chapter III, Screen Control Language                         page 129
  8509.  
  8510.  
  8511.  
  8512.  
  8513.  
  8514.  
  8515.  
  8516.  
  8517.  
  8518.  
  8519.  
  8520.  
  8521.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8522.  
  8523.  
  8524.                                      X_Max and Y_Max                                     X_Max and Y_Max
  8525.  
  8526.  
  8527.           FUNCTION X_Max:INTEGER;          FUNCTION X_Max:INTEGER;
  8528.  
  8529.           Returns a value equal to  80  the  width  of  the  currently selected
  8530.           format.  This  function  is  intended  to  be  used together with the
  8531.           'Display_Format' Procedure.
  8532.  
  8533.  
  8534.  
  8535.  
  8536.           FUNCTION Y_Max:INTEGER;          FUNCTION Y_Max:INTEGER;
  8537.  
  8538.           Returns a value equal to 25  the  height  of  the  currently selected
  8539.           format.  This  function  is  intended  to  be  used together with the
  8540.           'Display_Format' Procedure.
  8541.  
  8542.  
  8543.           Examples:          Examples
  8544.  
  8545.           Display_Format(X_Max,1);           Display_Format(X_Max,1);
  8546.  
  8547.           Displays the format in the upper right corner of the screen.
  8548.  
  8549.  
  8550.           Display_Format(X_Max div 2,Y_Max);          Display_Format(X_Max div 2,Y_Max);
  8551.  
  8552.           Displays the format on the  bottom  of  the  screen  and horizontally
  8553.           centered. 
  8554.  
  8555.  
  8556.           Display_Format(1,Y_Max);           Display_Format(1,Y_Max);
  8557.  
  8558.           Displays the format in the lower left corner of the screen.
  8559.  
  8560.  
  8561.           Display_Format(X_Max div 2,Y_Max div 2);           Display_Format(X_Max div 2,Y_Max div 2);
  8562.  
  8563.           Displays the format centered on the screen. 
  8564.  
  8565.  
  8566.           Display_Format(X_Max-3,Y_Max -2);          Display_Format(X_Max-3,Y_Max -2);
  8567.  
  8568.           Displays the  format wit  it's lower right corner positioned  on line
  8569.           23, column 77. 
  8570.  
  8571.  
  8572.  
  8573.  
  8574.           Chapter III, Screen Control Language                         page 130          Chapter III, Screen Control Language                         page 130
  8575.  
  8576.  
  8577.  
  8578.  
  8579.  
  8580.  
  8581.  
  8582.  
  8583.  
  8584.  
  8585.  
  8586.  
  8587.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8588.  
  8589.  
  8590.                                   Handling format input                                  Handling format input
  8591.  
  8592.  
  8593.  
  8594.           PROCEDURE Handle_Format;          PROCEDURE Handle_Format;
  8595.  
  8596.           This routine can be seen as the kernel of the SCL System.  It's basic
  8597.           purpose is to obtain keyboard input and act upon it. Besides this, it
  8598.           also manages a variety of other important functions such as:
  8599.  
  8600.             *  Cursor control.
  8601.             *  Input checks  according to  field specifications  and display of
  8602.                error messages.
  8603.             *  Display of Help screens and explanatory messages. 
  8604.             *  Formatting and display of field input.
  8605.             *  Control of field attributes according to specifications. 
  8606.             *  User interrupt recognition and handling.
  8607.             *  Invoking of background tasks.
  8608.                        
  8609.           Note:   'Handle_Format' is always called in form of a REPEAT....UNTIL          Note:                                                 REPEAT....UNTIL
  8610.           loop.  An  example  is  given  at  the  end  of  the  description  of
  8611.           'Format_Done' on the next page. 
  8612.  
  8613.  
  8614.           FUNCTION Format_Done:BOOLEAN;          FUNCTION Format_Done:BOOLEAN;
  8615.  
  8616.           This  Function  is  used  together with the procedure 'Handle_Format'
  8617.           described above in a REPEAT....UNTIL Loop.                                REPEAT....UNTIL
  8618.           It checks whether the format currently being handled is finished and,
  8619.           if this is the case, it then terminates it. 
  8620.           This means:
  8621.           It also  sets the  color of  the first  and last  line as well as the
  8622.           first and last column of the  format  to  Backgroundcolor  if  it was                                                    Backgroundcolor
  8623.           highlighted before (see 'Display_Format'). 
  8624.           It then  it checks  for the presence of another format waiting on the
  8625.           stack to be reactivated (one which had not been finished before) and,
  8626.           if this  is the case, restores the parts of the screen which had been
  8627.           overwritten. Then all pointers  are adjusted  to this  format and its
  8628.           handling is carried out from where it was 
  8629.           interrupted before. If there was no format waiting on the stack to be
  8630.           reactivated, the screen is then cleared.
  8631.  
  8632.  
  8633.           Note:  The complete principle of  SCL's format  stacking is described          Note:
  8634.           in Appendix A (Sample 3). 
  8635.  
  8636.  
  8637.  
  8638.  
  8639.  
  8640.           Chapter III, Screen Control Language                         page 131          Chapter III, Screen Control Language                         page 131
  8641.  
  8642.  
  8643.  
  8644.  
  8645.  
  8646.  
  8647.  
  8648.  
  8649.  
  8650.  
  8651.  
  8652.  
  8653.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8654.  
  8655.  
  8656.  
  8657.           Example:          Example
  8658.  
  8659.           REPEAT
  8660.             HANDLE_FORMAT; 
  8661.             
  8662.             {Here optional User Interrupt handling 
  8663.              statements could be inserted} 
  8664.  
  8665.           UNTIL FORMAT_DONE;
  8666.  
  8667.  
  8668.           The  above  represents  the  basic  construct of any SCL format input
  8669.           handling procedure. 
  8670.           The REPEAT....UNTIL loop  will  be  left  as  soon  as  the (boolean)              REPEAT....UNTIL
  8671.           function 'Format_Done'  detects that the format had been finished (In
  8672.           this case, 'Format_Done' returns TRUE). 
  8673.           Whenever   a   User   Specified   Interrupt   (see    under   'Format                         User   Specified   Interrupt
  8674.           Specifications'  in  the  SFD  part  of  this  manual)  comes up, the                                    SFD
  8675.           procedure 'Handle_Format' is exited and the user is  given the chance
  8676.           to  take   over  control   via  appropriate   statements  within  the
  8677.           REPEAT....UNTIL  loop  as  indicated  in  the  above  example.  Since          REPEAT....UNTIL
  8678.           'Format_Done'  always  returns  FALSE  as  long  as the format is not
  8679.           finished, 'Handle_Format' will be  reentered once  the user specified
  8680.           procedures have been performed. 
  8681.           Note  that  due  to  this  construction  the  specification  of  user
  8682.           interrupt handling  procedures is  optional; even  if interrupts have
  8683.           actually been specified for the appropriate format.
  8684.  
  8685.  
  8686.  
  8687.  
  8688.  
  8689.  
  8690.  
  8691.  
  8692.  
  8693.  
  8694.  
  8695.  
  8696.  
  8697.  
  8698.  
  8699.  
  8700.  
  8701.  
  8702.  
  8703.  
  8704.  
  8705.  
  8706.           Chapter III, Screen Control Language                         page 132          Chapter III, Screen Control Language                         page 132
  8707.  
  8708.  
  8709.  
  8710.  
  8711.  
  8712.  
  8713.  
  8714.  
  8715.  
  8716.  
  8717.  
  8718.  
  8719.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8720.  
  8721.  
  8722.                                  Format Handling Control                                 Format Handling Control
  8723.  
  8724.  
  8725.  
  8726.  
  8727.           PROCEDURE Blank_Format;          PROCEDURE Blank_Format;
  8728.  
  8729.           This procedure causes the space the currently handled format occupies
  8730.           on the screen to be cleared (filled with spaces).
  8731.  
  8732.  
  8733.  
  8734.  
  8735.           PROCEDURE Goto_Field(Fieldnr:INTEGER):          PROCEDURE Goto_Field(Fieldnr:INTEGER):
  8736.  
  8737.           This Procedure can be  used  during  in  a  User  Interrupt Procedure                                                      User  Interrupt Procedure
  8738.           (End_of_Field) to  jump to  another field  on the  format. It is your
  8739.           responsibility to make sure that the field number to jump to is valid
  8740.           and not declared as Output Only.                              Output Only
  8741.  
  8742.  
  8743.  
  8744.           PROCEDURE Finish_Format(Check:BOOLEAN);          PROCEDURE Finish_Format(Check:BOOLEAN);
  8745.  
  8746.           This procedure  is used  to terminate  the currently displayed format
  8747.           while it is being processed by 'Handle_Format', usually  depending on
  8748.           a  condition  being  checked  within  a  User Interrupt Procedure. It                                                   User Interrupt Procedure
  8749.           causes 'Handle_Format' to react in exactly  the  same  way  as  if an
  8750.           appropriate keyboard key would have been pressed.
  8751.           Terminate_Format requires  a boolean  argument which  decides in what
  8752.           way the format is to be finished.
  8753.           If 'Check' is FALSE,  it  will  be  terminated  unconditionally  in a
  8754.           similar way as if the 'ABORT' key would have been pressed. If 'Check'
  8755.           is true, 'Handle_Format' will  react as  if 'ESCape'  would have been
  8756.           pressed.  This  means,  before  actually terminating the format it is
  8757.           checked  whether  all  mandatory  fields  are   filled  in   and  the
  8758.           termination is refused if this should not be the case. 
  8759.  
  8760.  
  8761.                        
  8762.           Notes:  Terminating a format unconditionally with the above procedure          Notes:
  8763.           works even in case Abort_OK is set to  FALSE for  this format. Please                             Abort_OK
  8764.           remark also, that Format_Aborted is not set to TRUE.                            Format_Aborted
  8765.  
  8766.           Detailed examples  of how  to handle formats including User Interrupt                                                                 User Interrupt
  8767.           Procedures  can  be  found  in  Appendix  A  under  'SCL  Programming          Procedures
  8768.           examples'.
  8769.  
  8770.  
  8771.  
  8772.           Chapter III, Screen Control Language                         page 133          Chapter III, Screen Control Language                         page 133
  8773.  
  8774.  
  8775.  
  8776.  
  8777.  
  8778.  
  8779.  
  8780.  
  8781.  
  8782.  
  8783.  
  8784.  
  8785.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8786.  
  8787.  
  8788.                              Reading/Writting Format Fields                             Reading/Writting Format Fields
  8789.  
  8790.  
  8791.           Introduction          Introduction
  8792.  
  8793.           In  order  to  read  and  write  both  the  (boolean)  status  of the
  8794.           'selected' attribute as well as the  actual content  of format fields
  8795.           several SCL routines are provided.
  8796.            
  8797.           The following routines serve to access the field content:           The following routines serve to access the field content: 
  8798.                        
  8799.           R_Cont:           R_Cont:
  8800.           'Read field content'. A procedure to read the content of a field into
  8801.           a string variable.
  8802.                        
  8803.           G_Cont:           G_Cont:
  8804.           'Get field content'. Similar to above, but in form of a function.                                                                             
  8805.           W_Cont:           W_Cont:
  8806.           'Write field content'. A procedure to write the  content of  a string
  8807.           variable to a field.
  8808.                        
  8809.           C_Cont:           C_Cont:
  8810.           'Clear field  content'. A procedure to clear a field i.e to fill it's
  8811.           content with spaces).
  8812.  
  8813.  
  8814.                        
  8815.         | The following routines  serve  to  access  the  Selecte  attribute of          The following routines  serve  to  access  the  Selecte  attribute of
  8816.           format fields:          format fields:
  8817.  
  8818.                        
  8819.           R_Sel:           R_Sel:
  8820.           'Read field  selected status'.  A procedure to read the status of the
  8821.           'selected' attribute into a boolean variable.
  8822.                        
  8823.           G_Sel:           G_Sel:
  8824.           'Get field selected status'.Similar  to  'R_Sel'  but  in  form  of a
  8825.           boolean function. 
  8826.                        
  8827.           W_Sel:          W_Sel:
  8828.           'Write  field  selected  status'.  Sets  the status of the 'selected'
  8829.           attribute to the desired value.
  8830.  
  8831.                        
  8832.           Note:  A detailed description of these routines  can be  found on the          Note:
  8833.           following pages. 
  8834.  
  8835.  
  8836.  
  8837.  
  8838.           Chapter III, Screen Control Language                         page 134          Chapter III, Screen Control Language                         page 134
  8839.  
  8840.  
  8841.  
  8842.  
  8843.  
  8844.  
  8845.  
  8846.  
  8847.  
  8848.  
  8849.  
  8850.  
  8851.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8852.  
  8853.  
  8854.                                   Reading Field Content                                  Reading Field Content
  8855.  
  8856.  
  8857.           PROCEDURE R_Cont(Fieldnr:INTEGER; VAR Contents:String80);          PROCEDURE R_Cont(Fieldnr:INTEGER; VAR Contents:String80);
  8858.  
  8859.           This procedure acts on the format pointed to by 'R_Ptr'.
  8860.           It  reads  out  the  content  of  field  'Fieldnr'  and  puts it left
  8861.           justified into 'Contents'. Note that  the  content  of  the  field is
  8862.           always returned  in form  of a  string, even  in the  case of numeric
  8863.           variables. 
  8864.           In case the value in 'Fieldnr'  does not  represent a  valid field or
  8865.           'R_Ptr' does not point to a valid format an empty string (length = 0)
  8866.           is returned and 'Glb_Ok' is set to FALSE. 
  8867.  
  8868.  
  8869.           Example: R_Cont(2,Mystring);          Example: R_Cont(2,Mystring);
  8870.  
  8871.  
  8872.                    The content of the second field of the format pointed
  8873.                    to by 'R_Ptr' is returned in 'Mystring'. 
  8874.  
  8875.  
  8876.           Note:  R_Ptr normally either points  to the  format in  process or to          Note:  
  8877.           the one that was last processed by 'Handle_Format'. 
  8878.           Therefore, as long as 'Handle_Format' has not been performed on a new
  8879.           format, the last one is still accessible, even after it is 'finished'
  8880.           (in this  case however  only as long as no new format has been loaded
  8881.           with 'Select_Format').
  8882.           If no format has been processed yet or if the format last having been
  8883.           processed  was  overwritten  by  a  new  one  (it  was  finished  and
  8884.           'Select_Format' has been called)  'R_Ptr' contains  0 (Zero)  and any
  8885.           attempt to  read a  field now  would result in in a 'Fatal SCL Error'
  8886.           halting the program. 
  8887.  
  8888.           For detailed information on the above refer to Appendix A. 
  8889.  
  8890.  
  8891.  
  8892.           FUNCTION G_Cont(Fn:INTEGER):String80;          FUNCTION G_Cont(Fn:INTEGER):String80;
  8893.  
  8894.           This Function calls the procedure 'R_Cont'.
  8895.           Therefore  the  statement   Mystring:=G_Cont(2)   is   equivalent  to
  8896.           R_Cont(2,Mystring).
  8897.           The use  of 'G_Cont'  instead of 'R_Cont' often leads to more elegant
  8898.           constructs and  better readable  programs. It  can also  save in many
  8899.           cases the declaration of local variables. 
  8900.           The  two  (functionally  identical)  examples  on  the  next page may
  8901.           illustrate this.
  8902.  
  8903.  
  8904.           Chapter III, Screen Control Language                         page 135          Chapter III, Screen Control Language                         page 135
  8905.  
  8906.  
  8907.  
  8908.  
  8909.  
  8910.  
  8911.  
  8912.  
  8913.  
  8914.  
  8915.  
  8916.  
  8917.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8918.  
  8919.  
  8920.                              Examples for R_Cont and G_Cont                             Examples for R_Cont and G_Cont
  8921.  
  8922.  
  8923.           Example 1 (using R_Cont):          Example 1 (using R_Cont):
  8924.  
  8925.  
  8926.  
  8927.           PROCEDURE Read_Format;
  8928.  
  8929.           VAR
  8930.             Wrkstr:String80;    {TYPE String80 is defined as STRING[80]}
  8931.  
  8932.           BEGIN;
  8933.             R_Cont(1,Surname);  {Read the content of field 1 to 'Surname'}     
  8934.           R_Cont(2,Forename); {Field 2 to 'Forename'}
  8935.             R_Cont(3,Wrkstr);   {Field 3 to 'Wrkstr'}
  8936.             City:=Capital(Wrkstr);   {Change 'Wrkstr' to upper case and}  END; 
  8937.                              {store it in 'City'.} 
  8938.  
  8939.  
  8940.  
  8941.             
  8942.           Example 2 (using G_Cont):          Example 2 (using G_Cont):
  8943.  
  8944.  
  8945.           PROCEDURE Read_Format;
  8946.  
  8947.           BEGIN;
  8948.             Surname :=G_Cont(1);      {Read the content of field 1 
  8949.                                       into 'Surname'} 
  8950.             Forename:=G_Cont(2);      {Field 2 to 'Forename'}
  8951.             City:=Capital(G_Cont(3)); {Field converted to uppercase and  END;  
  8952.                               {stored in 'City'.} 
  8953.  
  8954.  
  8955.  
  8956.  
  8957.  
  8958.  
  8959.  
  8960.  
  8961.  
  8962.  
  8963.  
  8964.  
  8965.  
  8966.  
  8967.  
  8968.  
  8969.  
  8970.           Chapter III, Screen Control Language                         page 136          Chapter III, Screen Control Language                         page 136
  8971.  
  8972.  
  8973.  
  8974.  
  8975.  
  8976.  
  8977.  
  8978.  
  8979.  
  8980.  
  8981.  
  8982.  
  8983.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  8984.  
  8985.  
  8986.                                   Writing Field Content                                  Writing Field Content
  8987.  
  8988.  
  8989.  
  8990.           PROCEDURE W_Cont(Fieldnr:INTEGER;Cont:String80);          PROCEDURE W_Cont(Fieldnr:INTEGER;Cont:String80);
  8991.  
  8992.           This procedure works on the format pointed to by 'W_Ptr'.
  8993.           It writes  the string  'Cont' to the field indicated by 'Fieldnr'. If
  8994.           'Fieldnr' doesn't point to a valid field no  action is  performed and
  8995.           'Glb_Ok' is set to FALSE. 
  8996.           If 'Cont' does not completely fit into the field it is cut off at the
  8997.           appropriate length and 'Glb_Ok' is set  to false  as well.  Note that
  8998.           since W_Cont  expects a  string value,  numeric information has to be                W_Cont
  8999.           converted first. 
  9000.           In case the format  being  written  to  is  currently  displayed, the
  9001.           appropriate field content is changed on the screen as well.
  9002.  
  9003.  
  9004.  
  9005.           Example:          Example:
  9006.  
  9007.           PROCEDURE Prefill;
  9008.  
  9009.  
  9010.           VAR
  9011.            Wrkstr            : String80;
  9012.            A_String          : String80;   {Info to be written to field 1} 
  9013.            A_Real_Number     : REAL;       {Info to be written to field 2} 
  9014.            A_Integer_Number  : INTEGER;    {Info to be written to field 3}
  9015.            
  9016.  
  9017.           BEGIN;
  9018.            A_String        :='This is a string';         {Initialize}     
  9019.            A_Real_Number   :=1.234;                      {our silly }     
  9020.            A_Integer_Number:=67;                         {examples  }   
  9021.            W_Cont(1,A_String);              {Writes 'A_String' to field 1} 
  9022.  
  9023.            STR(A_Real_Number,Wrkstr);       {Converts it to a string...}  
  9024.            W_Cont(2,Wrkstr);                {...and writes it to field 2}
  9025.            W_Cont(3,St(A_Integer_Number);   {uses the SCL Function 'St'..} END;
  9026.               {..to convert it to a string and writes it to field 3.}          
  9027.               {Note:'St' can only be used to convert 'INTEGER values} 
  9028.  
  9029.                        
  9030.           Note:   W_Ptr  is initially set by the procedure 'Select_Format'  and          Note:
  9031.           keeps on pointing to  this format  until it  is   finished.  Detailed
  9032.           information on 'W_Ptr' can be found in Appendix A. 
  9033.  
  9034.  
  9035.  
  9036.           Chapter III, Screen Control Language                         page 137          Chapter III, Screen Control Language                         page 137
  9037.  
  9038.  
  9039.  
  9040.  
  9041.  
  9042.  
  9043.  
  9044.  
  9045.  
  9046.  
  9047.  
  9048.  
  9049.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9050.  
  9051.  
  9052.                                  Deleting Field Content                                 Deleting Field Content
  9053.  
  9054.  
  9055.           PROCEDURE C_Cont(Fieldnr:INTEGER);          PROCEDURE C_Cont(Fieldnr:INTEGER);
  9056.  
  9057.           This  procedure  'clears'  the  field  indicated  by 'Fieldnr'. It is
  9058.           equivalent to: W_Cont(Fieldnr,' '). Everything having been said under                         W_Cont(Fieldnr,' ')
  9059.           'W_Cont' applies to 'C_Cont' as well.
  9060.  
  9061.  
  9062.  
  9063.                        
  9064.           Example:          Example:
  9065.  
  9066.           C_Cont(1);      {Clears field 1, i.e. writes spaces to it.} 
  9067.  
  9068.  
  9069.  
  9070.  
  9071.  
  9072.  
  9073.  
  9074.  
  9075.  
  9076.  
  9077.  
  9078.  
  9079.  
  9080.  
  9081.  
  9082.  
  9083.  
  9084.  
  9085.  
  9086.  
  9087.  
  9088.  
  9089.  
  9090.  
  9091.  
  9092.  
  9093.  
  9094.  
  9095.  
  9096.  
  9097.  
  9098.  
  9099.  
  9100.  
  9101.  
  9102.           Chapter III, Screen Control Language                         page 138          Chapter III, Screen Control Language                         page 138
  9103.  
  9104.  
  9105.  
  9106.  
  9107.  
  9108.  
  9109.  
  9110.  
  9111.  
  9112.  
  9113.  
  9114.  
  9115.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9116.  
  9117.  
  9118.                             Reading the 'Selected' Attribute                            Reading the 'Selected' Attribute
  9119.  
  9120.  
  9121.  
  9122.           PROCEDURE R_Sel(Fieldnr:INTEGER; VAR Sel:BOOLEAN);          PROCEDURE R_Sel(Fieldnr:INTEGER; VAR Sel:BOOLEAN);
  9123.  
  9124.           This procedure acts on the format pointed to by R_Ptr.
  9125.           This procedure  returns in 'Sel' the status of the Selected attribute                                                             Selected
  9126.           of the field identified by 'Fieldnr'. 
  9127.           In case the value in 'Fieldnr'  does not  represent a  valid field or
  9128.           'R_Ptr' is not pointing to a valid format 'Glb_Ok' is set to FALSE. 
  9129.           For  further  information  on  'R_Ptr'  refer  to  the description of
  9130.           'R_Cont'. 
  9131.  
  9132.  
  9133.           Example:           Example: 
  9134.                        
  9135.           R_Sel(2,Status);          R_Sel(2,Status);
  9136.  
  9137.  
  9138.           After performing this operation, 'Status' will be TRUE  if the second
  9139.           field of the format pointed to by 'R_Ptr'is Selected.                                                      Selected
  9140.  
  9141.  
  9142.  
  9143.           FUNCTION G_Sel(Fn:INTEGER):BOOLEAN;          FUNCTION G_Sel(Fn:INTEGER):BOOLEAN;
  9144.  
  9145.           This function calls the procedure R_Sel. 
  9146.           Therefore     the  construct   Status:=G_Sel(2)  is  equivalent    to
  9147.           R_Sel(2,Status).
  9148.           In many cases, the use of 'G_Sel' in favour of  'R_Sel' can  not only
  9149.           save the  declaration of  local variables but also allow more elegant
  9150.           constructs.  The  following  two  (functionally  identical)  examples
  9151.           illustrate this.
  9152.  
  9153.  
  9154.           Example 1 (using R_Sel):          Example 1 (using R_Sel):
  9155.  
  9156.  
  9157.           R_Sel(1,Mrs);
  9158.           R_Sel(2,Miss);
  9159.           Female:= Mrs or Miss;
  9160.  
  9161.  
  9162.           Example 2 (using G_Sel):          Example 2 (using G_Sel):
  9163.  
  9164.  
  9165.           Female:=Gsel(1) or gsel(2);
  9166.  
  9167.  
  9168.           Chapter III, Screen Control Language                         page 139          Chapter III, Screen Control Language                         page 139
  9169.  
  9170.  
  9171.  
  9172.  
  9173.  
  9174.  
  9175.  
  9176.  
  9177.  
  9178.  
  9179.  
  9180.  
  9181.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9182.  
  9183.  
  9184.                             Writing the 'Selected' Attribute                            Writing the 'Selected' Attribute
  9185.  
  9186.  
  9187.  
  9188.           PROCEDURE W_Sel(Fieldnr:INTEGER;Sel:BOOLEAN);          PROCEDURE W_Sel(Fieldnr:INTEGER;Sel:BOOLEAN);
  9189.  
  9190.           This procedure works on the format pointed to by 'W_Ptr'.
  9191.           It sets  the 'Selected' attribute of the field indicated by 'Fieldnr'
  9192.           to the boolean value of 'Sel'.
  9193.           If 'Fieldnr' doesn't point to a  valid field  no action  is performed
  9194.           and 'Glb_Ok' is set to FALSE. 
  9195.           In  case  the  format  being  written  to is currently displayed, the
  9196.           appropriate field is changed to reflect the status  of the 'selected'
  9197.           attribute on the screen as well.
  9198.  
  9199.  
  9200.  
  9201.  
  9202.           Example:          Example:
  9203.  
  9204.  
  9205.           W_Sel(5,TRUE);   {Marks Field 5 to be 'selected'}
  9206.  
  9207.  
  9208.  
  9209.           Note:   W_Ptr is  initially set  by the procedure 'Select_Format' and          Note:   
  9210.           keeps on pointing to this format until it  is finished.  For detailed
  9211.           information on 'W_Ptr' refer to Appendix A.
  9212.  
  9213.  
  9214.  
  9215.  
  9216.  
  9217.  
  9218.  
  9219.  
  9220.  
  9221.  
  9222.  
  9223.  
  9224.  
  9225.  
  9226.  
  9227.  
  9228.  
  9229.  
  9230.  
  9231.  
  9232.  
  9233.  
  9234.           Chapter III, Screen Control Language                         page 140          Chapter III, Screen Control Language                         page 140
  9235.  
  9236.  
  9237.  
  9238.  
  9239.  
  9240.  
  9241.  
  9242.  
  9243.  
  9244.  
  9245.  
  9246.  
  9247.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9248.  
  9249.  
  9250.                                 String Handling routines                                String Handling routines
  9251.  
  9252.  
  9253.  
  9254.           FUNCTION Capital(Wrkstr: String): String;           FUNCTION Capital(Wrkstr: String): String;
  9255.             
  9256.           This  function  returns  the  input  string  converted  to  uppercase
  9257.           letters. 
  9258.  
  9259.  
  9260.           Example:          Example:
  9261.  
  9262.           Mystring:=Capital(Mystring);
  9263.  
  9264.  
  9265.                      If Mystring was ' aBc' it becomes ' ABC'.
  9266.  
  9267.  
  9268.  
  9269.  
  9270.  
  9271.  
  9272.           FUNCTION Stripleft(Wrkstr: String): String;          FUNCTION Stripleft(Wrkstr: String): String;
  9273.  
  9274.           Returns the input string with all leading spaces stripped off.
  9275.  
  9276.  
  9277.           Example:           Example:
  9278.  
  9279.           Mystring:=Stripleft(Mystring);
  9280.  
  9281.  
  9282.                    If Mystring was ' ABC ' it becomes 'ABC '.
  9283.  
  9284.  
  9285.  
  9286.  
  9287.  
  9288.           FUNCTION Stripright(Wrkstr: String): String;          FUNCTION Stripright(Wrkstr: String): String;
  9289.  
  9290.           Returns the input string with all trailing spaces stripped off.
  9291.  
  9292.  
  9293.           Example:          Example:
  9294.  
  9295.           Mystring:=Stripright(Mystring);
  9296.  
  9297.  
  9298.                    If Mystring was ' ABC ' it becomes ' ABC'.
  9299.  
  9300.           Chapter III, Screen Control Language                         page 141          Chapter III, Screen Control Language                         page 141
  9301.  
  9302.  
  9303.  
  9304.  
  9305.  
  9306.  
  9307.  
  9308.  
  9309.  
  9310.  
  9311.  
  9312.  
  9313.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9314.  
  9315.  
  9316.           PROCEDURE Strip(VAR Wrkstr:String;VAR Len:INTEGER);          PROCEDURE Strip(VAR Wrkstr:String;VAR Len:INTEGER);
  9317.  
  9318.           Removes all leading and trailing spaces from Wrkstr  and returns it's
  9319.           resulting length in len.
  9320.  
  9321.           Example:          Example:
  9322.            
  9323.           Mystring:=' ABC ';
  9324.           Strip(Mystring,Stlen);
  9325.  
  9326.           After  performing  the  above  statements,  Mystring equals 'ABC' and
  9327.           Stlen equals 3.
  9328.  
  9329.  
  9330.  
  9331.           FUNCTION Charstring(Whatchar:CHAR;Len:INTEGER):String;          FUNCTION Charstring(Whatchar:CHAR;Len:INTEGER):String;
  9332.  
  9333.           Returns a string of length = Len, completely filled with Whatchar.                                                                              
  9334.                        
  9335.           Example:           Example:
  9336.  
  9337.           Mystring:=Charstring('A',5);
  9338.  
  9339.                    Mystring now contains 'AAAAA'.
  9340.  
  9341.  
  9342.                        
  9343.           PROCEDURE Frontstring(Str:String; VAR Head,Tail:String);          PROCEDURE Frontstring(Str:String; VAR Head,Tail:String);
  9344.  
  9345.           Returns the first word  of  'Str'  in  'Head'  and  the  remainder in
  9346.           'Tail'.  In  both  cases,  leading  blanks  are  stripped  off.  Word
  9347.           separators can be one or more  blanks.  If  'Str'  only  contains one
  9348.           word, 'Tail' is returned with a length of 0 (zero). 
  9349.  
  9350.                        
  9351.           Example:          Example:
  9352.  
  9353.           Var
  9354.             S1,
  9355.             S2  :String;
  9356.  
  9357.           Begin;
  9358.            Frontstring('This_is.a-Frontstring 'This_is the tail  ',S1,S2);
  9359.           End;
  9360.  
  9361.           S1 now contains 'This_is.a-Frontstring' and S2 contains
  9362.           'This_is the tail  '.
  9363.           Please notice that trailing spaces in the tail are not removed.           Please notice that trailing spaces in the tail are not removed. 
  9364.  
  9365.  
  9366.           Chapter III, Screen Control Language                         page 142          Chapter III, Screen Control Language                         page 142
  9367.  
  9368.  
  9369.  
  9370.  
  9371.  
  9372.  
  9373.  
  9374.  
  9375.  
  9376.  
  9377.  
  9378.  
  9379.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9380.  
  9381.  
  9382.           FUNCTION Justify_Left(STR:String;Len:INTEGER):String;          FUNCTION Justify_Left(STR:String;Len:INTEGER):String;
  9383.  
  9384.           Returns the input string justified left in a field of length Len. The
  9385.           remaining part of the field is filled up with spaces.
  9386.           If the input string was, after the leading  and trailing  spaces were
  9387.           removed, still  longer than  len, it is cut off at len. In this case,
  9388.           Glb_Ok is set to false.
  9389.  
  9390.                        
  9391.           Example 1 :          Example 1 :
  9392.  
  9393.           Mystring:='   abc  ';
  9394.           Mystring:=Justify_Left(Mystring,5);
  9395.                 
  9396.           After execution, Mystring is equal to 'abc  '.
  9397.  
  9398.  
  9399.           Example 2 :          Example 2 :
  9400.  
  9401.           Mystring:='   abc  ';
  9402.           Mystring:=Justify_Left(Mystring,2);
  9403.  
  9404.           In this example, Mystring would be returned as 'ab' and  Glb_Ok would
  9405.           be false.
  9406.  
  9407.  
  9408.  
  9409.           FUNCTION Justify_Right(STR:String;Len:INTEGER):String;          FUNCTION Justify_Right(STR:String;Len:INTEGER):String;
  9410.  
  9411.           Returns the  input string  justified left  in a  field of length Len.
  9412.           with the part before  the text  being filled  up with  spaces. If the
  9413.           input string  without leading and trailing spaces is longer than len,
  9414.           it is cut off at len. In this case, Glb_Ok is set to false.
  9415.  
  9416.  
  9417.           Example 1:          Example 1:
  9418.  
  9419.           Mystring:='   abc  ';
  9420.           Mystring:=Justify_Right(Mystring,5);
  9421.                 
  9422.           This example returns Mystring = '  abc'.
  9423.  
  9424.                        
  9425.           Example 2:          Example 2:
  9426.  
  9427.           Mystring:='   abc  ';
  9428.           Mystring:=Justify_Right(Mystring,2);
  9429.  
  9430.           Mystring would now be equal to 'ab' and Glb_Ok would be false.
  9431.  
  9432.           Chapter III, Screen Control Language                         page 143          Chapter III, Screen Control Language                         page 143
  9433.  
  9434.  
  9435.  
  9436.  
  9437.  
  9438.  
  9439.  
  9440.  
  9441.  
  9442.  
  9443.  
  9444.  
  9445.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9446.  
  9447.  
  9448.           FUNCTION Justify_Center(STR:String;Len:INTEGER):String;          FUNCTION Justify_Center(STR:String;Len:INTEGER):String;
  9449.  
  9450.           Returns the input string centered in  a field  of length  Len. If the
  9451.           input string  without leading and trailing spaces is longer than Len,
  9452.           it is cut off at Len. In this case, Glb_Ok is set to false.
  9453.  
  9454.  
  9455.                        
  9456.           Examples :          Examples :
  9457.  
  9458.                        Mystring:='  abc            ';
  9459.  
  9460.                    1.  Mystring:=Justify_Center(Mystring,5);      
  9461.  
  9462.                        This example returns Mystring = ' abc '.
  9463.  
  9464.  
  9465.                    2.  Mystring:=Justify_Center(Mystring,1);
  9466.  
  9467.                        The value returned is 'a'  and Glb_Ok is false. 
  9468.  
  9469.  
  9470.  
  9471.  
  9472.  
  9473.  
  9474.  
  9475.  
  9476.  
  9477.  
  9478.  
  9479.  
  9480.  
  9481.  
  9482.  
  9483.  
  9484.  
  9485.  
  9486.  
  9487.  
  9488.  
  9489.  
  9490.  
  9491.  
  9492.  
  9493.  
  9494.  
  9495.  
  9496.  
  9497.  
  9498.           Chapter III, Screen Control Language                         page 144          Chapter III, Screen Control Language                         page 144
  9499.  
  9500.  
  9501.  
  9502.  
  9503.  
  9504.  
  9505.  
  9506.  
  9507.  
  9508.  
  9509.  
  9510.  
  9511.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9512.  
  9513.  
  9514.                                     System Functions                                    System Functions
  9515.                        
  9516.           FUNCTION Environment(Name:String128):String128;          FUNCTION Environment(Name:String128):String128;
  9517.  
  9518.           This function returns the content of  the specified  line out  of the
  9519.           DOS Environment. For Details on the DOS Environment and how it can be                                              DOS Environment
  9520.           used refer to the  description  of  the  'Set'  command  in  your DOS
  9521.           manual.
  9522.  
  9523.                        
  9524.           Example:           Example:
  9525.  
  9526.           Var Mystr:String;
  9527.  
  9528.           BEGIN;
  9529.             Mystr:=Environment('COMSPEC');
  9530.           END;
  9531.  
  9532.           Mystring  contains  now  the  complete  path and name of your systems
  9533.           primary command processor, for example 'C:/COMMAND.COM'.  
  9534.  
  9535.  
  9536.             PROCEDURE Execute(VAR Progstring:String80); VAR Result:INTEGER);            PROCEDURE Execute(VAR Progstring:String80); VAR Result:INTEGER);                       
  9537.                        
  9538.           This Procedure executes the  program specified  by 'Progstring'. Once
  9539.           this  program  has  finished  execution,  control  is returned to the
  9540.           calling program (your application). 
  9541.           Since Execute does not read the settings of  'Path' or 'Environment',                Execute
  9542.           'Progstring'  must  contain,  beside  the  actual  program  name, the
  9543.           complete path description if the program to be executed is not in the
  9544.           Active  directory.  In  addition, 'Progstring' can optionally contain          Active  directory
  9545.           one or  more parameters.  The program  name extension  (i.e '.EXE' or
  9546.           '.COM' is  optional. If no extension is specified, Execute will first                                                             Execute
  9547.           look for a '.COM'  and then,  in case  it is  not found  for a '.EXE'
  9548.           file.  The  result  of  the  operation  are  returned in DOSERROR and
  9549.           DOSEXTCODE (see your Turbo Pascal Manual).
  9550.  
  9551.           Example:          Example:
  9552.  
  9553.           Execute('C:\Myprog firstparam secondparam thirdparam');
  9554.  
  9555.           {Fires up 'Myprog' with three parameters. Once 'Myprog' has finished,
  9556.           control is  passed back  to your  application. Note that no extension
  9557.           for 'Myprog' has been  specified in  the above  example. If 'Execute'
  9558.           does not  find an extension, it first tries '.COM' and if such a file
  9559.           cannot be found, it then tries '.EXE'} 
  9560.                        
  9561.           Note:   See also the 'ExecuteDos' command.           Note:
  9562.  
  9563.  
  9564.           Chapter III, Screen Control Language                         page 145          Chapter III, Screen Control Language                         page 145
  9565.  
  9566.  
  9567.  
  9568.  
  9569.  
  9570.  
  9571.  
  9572.  
  9573.  
  9574.  
  9575.  
  9576.  
  9577.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9578.  
  9579.  
  9580.           PROCEDURE ExecuteDos(Command:String128);          PROCEDURE ExecuteDos(Command:String128);
  9581.  
  9582.           This  procedure   fires  up   the  DOS   command  processor  (usually
  9583.           COMMAND.COM) and  passes the string contained in 'Command' to it. The
  9584.           command processor the acts upon this string in the same way as  if it
  9585.           had been entered on the normal DOS prompt. 
  9586.           Once the  command has been executed, the command processor terminates
  9587.           and control is passed back to  your application.  The results  of the
  9588.           operation are  returned in DOSERROR and DOSEXITCODE (see turbo Pascal
  9589.           4.0 Manual).
  9590.           If 'Command' is an empty string (i.e a string with a length  of 0) or
  9591.           if it only contains blanks, the DOS Command processor is fired up and
  9592.           remains active for input until it is terminated with the  DOS Command
  9593.           Exit (refer to your DOS Manual for details).   Then control is passed          Exit
  9594.           back to your program. 
  9595.                        
  9596.           Note:  In addition to actual DOS commands  there are  also some other          Note:
  9597.           programs which  require COMMAND.COM to be running in order to execute
  9598.           properly. This  applies particularly  to many  external commands (for
  9599.           example CHKDSK.COM)  but also  to all  kind of batch file processing.
  9600.           Such tasks must therefore be  started  up  using  'ExecuteDos' rather
  9601.           than 'Execute'.
  9602.           An important  restriction for  both 'Execute' and 'ExecuteDos' is the
  9603.           fact that they only work if the application program has been compiled
  9604.           to disk.  In addition  you must make sure that enough memory has been
  9605.           left over for the programs to be executed.  In order  to achieve this
  9606.           you  must  limit  the  Maximum  free  dynamic  memory  value (the 'A'                                 Maximum  free  dynamic  memory
  9607.           selection on TURBO PASCALS 'Option'  menu)  to  an  appropriate value
  9608.           prior  to  compiling  your  program.  The  value  to choose cannot be
  9609.           exactly determined, it  very  much  depends  on  your  program. Crude
  9610.           guidelines can be found in Appendix A.
  9611.            
  9612.                        
  9613.           Examples:           Examples:
  9614.                        
  9615.           ExecuteDos('Dir a:*.*')          ExecuteDos('Dir a:*.*')
  9616.  
  9617.           {Loads the  command processor  and passes 'Dir a:*.*' to it. Once the
  9618.           'Dir' command  has been  performed, the  command processor terminates
  9619.           and control is passed back to your program.} 
  9620.  
  9621.                        
  9622.           ExecuteDos('');           ExecuteDos(''); 
  9623.  
  9624.           {Invokes DOS  including the  familiar prompt.  You can  now enter any
  9625.           commands you want. 'Exit' returns you to your program. 
  9626.                        
  9627.           Note:  For further examples of the above constructs refer to Appendix          Note:
  9628.           A. 
  9629.  
  9630.           Chapter III, Screen Control Language                         page 146          Chapter III, Screen Control Language                         page 146
  9631.  
  9632.  
  9633.  
  9634.  
  9635.  
  9636.  
  9637.  
  9638.  
  9639.  
  9640.  
  9641.  
  9642.  
  9643.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9644.  
  9645.  
  9646.                                   Date related routines                                  Date related routines
  9647.  
  9648.  
  9649.           Most  of  the  following  routines  apply  the  specifications  being
  9650.           contained in the DOS  Country Information  for date  formatting. This                           DOS  Country Information
  9651.           offers  the  tremendous  advantage  that the  appropriate routines in
  9652.           your program never have to be changed, independant of the country the
  9653.           program is used in. 
  9654.           For more details on this matter please refer to the Appendix A. 
  9655.  
  9656.  
  9657.  
  9658.                        
  9659.           FUNCTION Date:String10;          FUNCTION Date:String10;
  9660.  
  9661.           Returns the  system date  in form  of a  string. Both its format, i.e
  9662.           MMDDYY or DDMMYY, and the  delimiters  being  used  are  obtained and
  9663.           automatically set  according to the Country  Information SCL has been                                              Country  Information SCL
  9664.           told to use. By default, SCL assumes the country   specified   in the                                   SCL
  9665.           file  'CONFIG.SYS'.  There  are several possibilities to influence or
  9666.           override this selection within SCL, for details refer to Appendix A.                                          SCL
  9667.  
  9668.           Assuming the Country is UK (Country = 44) 'Date' returns  a string of
  9669.           the form  'DD-MM-YY', in  the case of Germany (Country = 49) it would
  9670.           be 'DD.MM.YY' and for USA (Country = 1)  the format  would be 'MM-DD-
  9671.           YY'.
  9672.  
  9673.  
  9674.  
  9675.  
  9676.           FUNCTION Date_String(Y,M,D:WORD):String10;          FUNCTION Date_String(Y,M,D:WORD):String10;
  9677.  
  9678.           This function  returns the  date passed to it as integers (Y,M and D)
  9679.           in form of a  string.  Everything  having  been  said  above  for the
  9680.           function 'Date' applies to 'Date_String' as well. Date_String accepts
  9681.           the year in both 2 and 4 digit format. 
  9682.  
  9683.  
  9684.  
  9685.  
  9686.  
  9687.  
  9688.  
  9689.  
  9690.  
  9691.  
  9692.  
  9693.  
  9694.  
  9695.  
  9696.           Chapter III, Screen Control Language                         page 147          Chapter III, Screen Control Language                         page 147
  9697.  
  9698.  
  9699.  
  9700.  
  9701.  
  9702.  
  9703.  
  9704.  
  9705.  
  9706.  
  9707.  
  9708.  
  9709.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9710.  
  9711.  
  9712.           PROCEDURE Check_Date(VAR Date_Str:String10; VAR Y,M,D:WORD);           PROCEDURE Check_Date(VAR Date_Str:String10; VAR Y,M,D:WORD); 
  9713.  
  9714.           'Check_Date' converts 'Date_Str' into  three integers  values Y,M and
  9715.           D.   'Date_Str' must  contain a  valid date in the format DD-MM-YY or
  9716.           MM-DD-YY,  depending  on  the  Country  Information  being  used (see                                         Country  Information
  9717.           above). The  separators can  be any non numerical characters. Leading
  9718.           zeroes can be omitted. The year can be entered either in full (as for
  9719.           example '1987') or as a 2 digit number (as '87'). 
  9720.           The date in 'Date_Str' is checked for validity and, if it is found to
  9721.           be invalid, 'Glb_Ok' is set to false.  
  9722.  
  9723.  
  9724.                        
  9725.           FUNCTION Weekday(Y,M,D:WORD):INTEGER;          FUNCTION Weekday(Y,M,D:WORD):INTEGER;
  9726.  
  9727.           'Weekday' calculates the day of the week for the date passed to it in
  9728.           Y,M and  D. The  day of  the week  is returned  in form of an Integer
  9729.           number. The meanings are: 0=Sunday, 1=Monday and so on. Please notice
  9730.           that if  the year  is passed to this function as a 2 digit value 1900
  9731.           is added to it. Therefore this routine cannot be used for years below
  9732.           100 A.D. 
  9733.  
  9734.  
  9735.  
  9736.           FUNCTION Julian_Date(VAR Y,M,D:WORD):REAL;          FUNCTION Julian_Date(VAR Y,M,D:WORD):REAL;
  9737.  
  9738.           This function  returns the  date passed  to it  in Y,M,D in form of a
  9739.           number of days since 1.Jan 00 A.D. The value passed  back is  in form
  9740.           of a  REAL number.  Julian_Date can  be ideally used to calculate the
  9741.           number of days between two dates. If 'Y'  contains a  value less than
  9742.           100, 1900  is added to it. Therefore this routine can not be used for
  9743.           any year below 100 A.D.
  9744.  
  9745.  
  9746.  
  9747.           PROCEDURE Normal_Date(VAR Julian:REAL;VAR Y,M,D:WORD);          PROCEDURE Normal_Date(VAR Julian:REAL;VAR Y,M,D:WORD);
  9748.  
  9749.           Normal_Date  is  the  counterpart  of  'Julian_Date'  above,  i.e  it
  9750.           converts a  Julian date  passed to it into three Integer Values Year,
  9751.           Month and Day.
  9752.  
  9753.  
  9754.                        
  9755.           Note:  For examples on how to use the above routines please  refer to          Note:
  9756.           Appendix A.
  9757.  
  9758.  
  9759.  
  9760.  
  9761.  
  9762.           Chapter III, Screen Control Language                         page 148          Chapter III, Screen Control Language                         page 148
  9763.  
  9764.  
  9765.  
  9766.  
  9767.  
  9768.  
  9769.  
  9770.  
  9771.  
  9772.  
  9773.  
  9774.  
  9775.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9776.  
  9777.  
  9778.                                   Time related Routines                                  Time related Routines
  9779.  
  9780.  
  9781.  
  9782.           FUNCTION Time(Seconds:BOOLEAN):String10;          FUNCTION Time(Seconds:BOOLEAN):String10;
  9783.  
  9784.           'Time' returns  the system  time (24 hour based) in form of a string.
  9785.           If 'Seconds' is TRUE, this string has the  format HH:MM:SS, otherwise
  9786.           it is  HH:MM. The  separators being  used (in  the above example ':')
  9787.           depends on the Country Information  and  can  therefore  be different                         Country Information
  9788.           depending on the country. Refer to Appendix A for details.
  9789.  
  9790.  
  9791.  
  9792.  
  9793.           FUNCTION Time_String(H,M,S:WORD):String10;          FUNCTION Time_String(H,M,S:WORD):String10;
  9794.  
  9795.           'Time_String' converts the time passed to it in H,M and S to a string
  9796.           of  the  form  'HH:MM:SS'.  Leading  blanks  are  replaced   by  '0'.
  9797.           Everything    having  been  said  under  'Time'  regarding separators
  9798.           applies to this function as well. 
  9799.           In order to  obtain  a  time  string  without  seconds  the following
  9800.           construct may be used: 
  9801.  
  9802.           Mystring:=COPY(Time_String(H,M,S),1,5);
  9803.  
  9804.  
  9805.  
  9806.                        
  9807.           PROCEDURE Check_Time(VAR Time_Str:String10; VAR H,M,S : WORD);           PROCEDURE Check_Time(VAR Time_Str:String10; VAR H,M,S : WORD); 
  9808.  
  9809.           Converts the  value in 'Time_Str' to three Integers and checks it for
  9810.           validity. If the check does not  succeed, 'Glb_Ok'  is set  to false.
  9811.           The  string  passed  in  'Time_Str'  must  have  one of the following
  9812.           formats:
  9813.           'HH:MM:SS' or 'HH:MM'. Leading zeroes can be omitted.  Separators can
  9814.           be any non numerical characters. Hours are assumed to be based on the
  9815.           24 hour format. 
  9816.  
  9817.  
  9818.  
  9819.  
  9820.  
  9821.  
  9822.  
  9823.  
  9824.  
  9825.  
  9826.  
  9827.  
  9828.           Chapter III, Screen Control Language                         page 149          Chapter III, Screen Control Language                         page 149
  9829.  
  9830.  
  9831.  
  9832.  
  9833.  
  9834.  
  9835.  
  9836.  
  9837.  
  9838.  
  9839.  
  9840.  
  9841.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9842.  
  9843.  
  9844.                                Background Processing Tasks                               Background Processing Tasks
  9845.  
  9846.  
  9847.           SCL is capable to perform user written routines as Background tasks.                                                             Background tasks
  9848.           There are two different hooks for  Background Tasks  provided in SCL,                                             Background Tasks
  9849.           one for low priority and the other for high priority work.
  9850.  
  9851.            
  9852.           The High priority background task is unconditionally performed by SCL
  9853.           every  time  it goes through the internal   loop   of 'Handle_Format'
  9854.           (Whenever SCL waits for keyboard input it is idling in this loop).
  9855.           The low  priority background task is identical except that it is only
  9856.           performed when no other tasks are pending, i.e. there is  no keyboard
  9857.           input waiting to be processed and no screen updates are required. 
  9858.  
  9859.  
  9860.           In  order  to  declare  a  user  written  routine  (Procedure)  to be
  9861.           performed as a background task by SCL all you need is to  include one
  9862.           of the following two statements in the program:
  9863.  
  9864.           LP_Background_Pointer:=@<Procedurename>; 
  9865.                 {this will cause SCL to execute <Procedurename> as a Low
  9866.                 Priority  background task}
  9867.  
  9868.            or
  9869.  
  9870.  
  9871.           HP_Background_Pointer:=@<Procedurename>   
  9872.                 {SCL will execute <Procedurename> as a High priority
  9873.                 Background Task}
  9874.  
  9875.  
  9876.                        
  9877.           Note:  Please notice that background procedures must be compiled with          Note:
  9878.           the 'Force Far Calls' Compiler Option.
  9879.           More details on Background tasks can be found  in the  explanation of
  9880.           SAMPLE4 distributed in Appendix A.
  9881.  
  9882.  
  9883.  
  9884.  
  9885.  
  9886.  
  9887.  
  9888.  
  9889.  
  9890.  
  9891.  
  9892.  
  9893.  
  9894.           Chapter III, Screen Control Language                         page 150          Chapter III, Screen Control Language                         page 150
  9895.  
  9896.  
  9897.  
  9898.  
  9899.  
  9900.  
  9901.  
  9902.  
  9903.  
  9904.  
  9905.  
  9906.  
  9907.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9908.  
  9909.  
  9910.                                      Other Routines                                     Other Routines
  9911.  
  9912.  
  9913.           FUNCTION St(I:INTEGER):String80;          FUNCTION St(I:INTEGER):String80;
  9914.  
  9915.           Returns an  Integer number  converted to  a string.  This function is
  9916.           especially useful to write numeric values to format fields.
  9917.  
  9918.           Example: Mystring:=St(15) returns '15' in Mystring.          Example
  9919.  
  9920.  
  9921.  
  9922.  
  9923.           FUNCTION Rst(R:REAL;Decimals:INTEGER):String80;          FUNCTION Rst(R:REAL;Decimals:INTEGER):String80;
  9924.  
  9925.           Returns an Real number converted to  a string.  Decimals must contain
  9926.           the number of positions to be shown after the decimal point. 
  9927.  
  9928.           Example: Mystring:=Rst(3.55555,2) returns '3.56'.          Example
  9929.  
  9930.  
  9931.  
  9932.                        
  9933.           FUNCTION Nr(St:String80) : INTEGER;          FUNCTION Nr(St:String80) : INTEGER;
  9934.  
  9935.           Converts  a  string  into  an  Integer  number. 'St' must be a string
  9936.           expressing an integer value. If 'St' does not epress an Integer value
  9937.           according  to  the  rules  for  numeric constants then 'Nr' returns 0
  9938.           (zero) and Glb_Ok is set to false. 
  9939.           This function is mainly intended to  read numeric  format fields into
  9940.           integer variables.
  9941.  
  9942.           Example: My_Integer_Number :=Nr(G_Var(2));           Example
  9943.  
  9944.  
  9945.  
  9946.                        
  9947.           FUNCTION Rnr(St:String80) : REAL;          FUNCTION Rnr(St:String80) : REAL;
  9948.  
  9949.           Converts  a  string  into  an  Real  number.  'St'  must  be a string
  9950.           expressing a valid real value. If 'St' does  not epress  a Real value
  9951.           according to  the rules  for numeric  constants then  'Rnr' returns 0
  9952.           (zero) and Glb_Ok is set to false. 
  9953.           This function is mainly intended  to  read  the  contents  of numeric
  9954.           format fields into 'Real' variables.
  9955.  
  9956.  
  9957.           Example: My_Real_Number :=Rnr(G_Var(2));           Example
  9958.  
  9959.  
  9960.           Chapter III, Screen Control Language                         page 151          Chapter III, Screen Control Language                         page 151
  9961.  
  9962.  
  9963.  
  9964.  
  9965.  
  9966.  
  9967.  
  9968.  
  9969.  
  9970.  
  9971.  
  9972.  
  9973.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  9974.  
  9975.  
  9976.           FUNCTION Power(Mantissa, Exponent : REAL):REAL;          FUNCTION Power(Mantissa, Exponent : REAL):REAL;
  9977.  
  9978.           Returns the value of Mantissa raised to the power of Exponent.
  9979.  
  9980.  
  9981.  
  9982.           FUNCTION Exist(Fn : String80):BOOLEAN;          FUNCTION Exist(Fn : String80):BOOLEAN;
  9983.  
  9984.           Returns TRUE  if a  file with the name of Fn exists. Fn can contain a
  9985.           complete path description according to DOS rules.
  9986.  
  9987.  
  9988.  
  9989.           PROCEDURE Beep;          PROCEDURE Beep;
  9990.  
  9991.           Creates a sound with a length of 'Beep_Time' clock ticks, alternating
  9992.           every every clock tick between the two frequencies 'Beep_Frequency_1'
  9993.           and 'Beep_Frequency_2'.
  9994.  
  9995.                        
  9996.           Note:  A clock tick occurs approximately 18.2 times per second (about          Note:
  9997.           every 55 ms).
  9998.  
  9999.  
  10000.  
  10001.           FUNCTION Sys_Msg(Msgnr : INTEGER):String80;          FUNCTION Sys_Msg(Msgnr : INTEGER):String80;
  10002.  
  10003.           Returns the  text of  record <Msgnr> in file <Screenfile>.ERR. Can be
  10004.           used in user programs to receive strings etc stored in this file (See
  10005.           also Appendix A; "The error message file").
  10006.  
  10007.  
  10008.           FUNCTION Format_Name:String10;          FUNCTION Format_Name:String10;
  10009.  
  10010.           Returns the name of the currently active format.
  10011.  
  10012.  
  10013.  
  10014.  
  10015.  
  10016.  
  10017.  
  10018.  
  10019.  
  10020.  
  10021.  
  10022.  
  10023.  
  10024.  
  10025.  
  10026.           Chapter III, Screen Control Language                         page 152          Chapter III, Screen Control Language                         page 152
  10027.  
  10028.  
  10029.  
  10030.  
  10031.  
  10032.  
  10033.  
  10034.  
  10035.  
  10036.  
  10037.  
  10038.  
  10039.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10040.  
  10041.  
  10042.  
  10043.  
  10044.  
  10045.  
  10046.  
  10047.  
  10048.  
  10049.  
  10050.  
  10051.  
  10052.  
  10053.  
  10054.  
  10055.  
  10056.  
  10057.  
  10058.  
  10059.  
  10060.                                        Chapter IV                                       Chapter IV                       
  10061.  
  10062.  
  10063.  
  10064.  
  10065.  
  10066.  
  10067.  
  10068.  
  10069.  
  10070.  
  10071.  
  10072.  
  10073.  
  10074.  
  10075.  
  10076.  
  10077.  
  10078.  
  10079.  
  10080.  
  10081.  
  10082.  
  10083.  
  10084.  
  10085.  
  10086.  
  10087.  
  10088.  
  10089.  
  10090.  
  10091.  
  10092.  
  10093.  
  10094.  
  10095.  
  10096.  
  10097.  
  10098.  
  10099.  
  10100.  
  10101.  
  10102.  
  10103.  
  10104.  
  10105.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10106.  
  10107.  
  10108.  
  10109.  
  10110.  
  10111.  
  10112.  
  10113.  
  10114.  
  10115.  
  10116.  
  10117.  
  10118.  
  10119.  
  10120.  
  10121.  
  10122.  
  10123.  
  10124.  
  10125.  
  10126.  
  10127.                           This Page is intentionally left blank
  10128.  
  10129.  
  10130.  
  10131.  
  10132.  
  10133.  
  10134.  
  10135.  
  10136.  
  10137.  
  10138.  
  10139.  
  10140.  
  10141.  
  10142.  
  10143.  
  10144.  
  10145.  
  10146.  
  10147.  
  10148.  
  10149.  
  10150.  
  10151.  
  10152.  
  10153.  
  10154.  
  10155.  
  10156.  
  10157.  
  10158.  
  10159.  
  10160.  
  10161.  
  10162.  
  10163.  
  10164.  
  10165.  
  10166.  
  10167.  
  10168.  
  10169.  
  10170.  
  10171.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10172.  
  10173.  
  10174.                        
  10175.                        
  10176.                        
  10177.                        
  10178.                        
  10179.                        
  10180.                        
  10181.                        
  10182.                        
  10183.                        
  10184.                        
  10185.                        
  10186.                        
  10187.                                           S C L                                          S C L                       
  10188.                        
  10189.                        
  10190.                        
  10191.                               Data Communications Subsystem                              Data Communications Subsystem
  10192.  
  10193.  
  10194.  
  10195.  
  10196.  
  10197.  
  10198.  
  10199.  
  10200.  
  10201.  
  10202.  
  10203.  
  10204.  
  10205.  
  10206.  
  10207.  
  10208.  
  10209.  
  10210.  
  10211.  
  10212.  
  10213.  
  10214.  
  10215.  
  10216.  
  10217.  
  10218.  
  10219.  
  10220.  
  10221.  
  10222.  
  10223.  
  10224.  
  10225.  
  10226.  
  10227.  
  10228.  
  10229.  
  10230.  
  10231.  
  10232.  
  10233.  
  10234.  
  10235.  
  10236.  
  10237.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10238.  
  10239.  
  10240.                                       Introduction                                      Introduction
  10241.  
  10242.  
  10243.  
  10244.           Due to  their background tasking capability, SCL programs are ideally
  10245.           suited for data communications. 
  10246.           This opens many exciting  possibilities  especially  in  the  area of
  10247.           micro-mainframe  connections,  but  also  allow you to build terminal
  10248.           emulators etc.
  10249.           The datacom routines provided by  SCL  allow  you  to  easily develop
  10250.           complex protocols that enable SCL programs  to communicate with other
  10251.           machines via the RS232 serial interface. 
  10252.           All  necessary  communications  parameters   can  be  programatically
  10253.           changed and easily adapted to any requirements. 
  10254.           The actual  handling and  monitoring of  the RS232  port is interrupt
  10255.           driven  and  therefore  very  powerful  without  imposing unnecessary
  10256.           overhead on your program. 
  10257.  
  10258.           The  following   discusses  the   complete  SCL  Data  Communications
  10259.           Subsystem. In order to help  you  develop  your  own  protocols   two
  10260.           example programs have been provided on your distribution disks, these
  10261.           will be discussed as well.
  10262.  
  10263.  
  10264.  
  10265.  
  10266.  
  10267.           Note:          Note:
  10268.           In order  to  utilize  the  SCL  Data  Communications  routines, your
  10269.           computer  must  be  equipped  with  a  serial  asynchronous Interface
  10270.           (COM1:). This Interface will typically be connected to a Modem. 
  10271.  
  10272.  
  10273.  
  10274.  
  10275.  
  10276.  
  10277.  
  10278.  
  10279.  
  10280.  
  10281.  
  10282.  
  10283.  
  10284.  
  10285.  
  10286.  
  10287.  
  10288.  
  10289.  
  10290.           CHAPTER IV, SCL Data Communication subsystem             page 156          CHAPTER IV, SCL Data Communication subsystem             page 156
  10291.  
  10292.  
  10293.  
  10294.  
  10295.  
  10296.  
  10297.  
  10298.  
  10299.  
  10300.  
  10301.  
  10302.  
  10303.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10304.  
  10305.  
  10306.                             Global Communications Parameters                            Global Communications Parameters
  10307.  
  10308.           The   following parameters  must be  set according   to   your needs.
  10309.           Since all  major parameters  are declared  using Typed Constants this                                                           Typed Constants
  10310.           can be done either in the program source or during runtime.
  10311.  
  10312.  
  10313.                        
  10314.           DC_Parity          DC_Parity
  10315.  
  10316.           Declaration:
  10317.           CONST Dc_Parity : CHAR = 'E';
  10318.  
  10319.           This parameter  determines which  parity is  being used,  if any. The
  10320.           possible values are 'E' (Even), 'O' (Odd) and 'N' (None).                                                                     
  10321.           DC_Stopbits.          DC_Stopbits.
  10322.  
  10323.           Declaration:
  10324.           CONST Dc_Stopbits : Integer = 1;
  10325.  
  10326.           Set this value to 2 if two stopbits are required. 
  10327.  
  10328.                        
  10329.           DC_Speed          DC_Speed
  10330.  
  10331.           Declaration:
  10332.           CONST Dc_Speed : Integer = 9600;
  10333.  
  10334.           This parameter determines the line speed in baud. The possible values
  10335.           are 110, 150, 300, 600, 1200, 2400, 4800 and 9600 baud.
  10336.  
  10337.                        
  10338.           DC_Charsize          DC_Charsize
  10339.  
  10340.           Declaration:
  10341.           CONST Dc_Charsize : Integer = 7;
  10342.  
  10343.           This value determines the number of bits per  character. The possible
  10344.           values are 7 or 8.
  10345.  
  10346.                        
  10347.           BCC_Set          BCC_Set
  10348.  
  10349.           Declaration:
  10350.           CONST BCC_Set : BOOLEAN = FALSE;
  10351.  
  10352.           If this  variable is  TRUE, a  Block Check Character is sent with all
  10353.           messages. Refer  to  the  description  of  'Send_Buffer'  for further
  10354.           details.
  10355.  
  10356.           CHAPTER IV, SCL Data Communication subsystem             page 157          CHAPTER IV, SCL Data Communication subsystem             page 157
  10357.  
  10358.  
  10359.  
  10360.  
  10361.  
  10362.  
  10363.  
  10364.  
  10365.  
  10366.  
  10367.  
  10368.  
  10369.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10370.  
  10371.  
  10372.                                     Timers and Delays                                    Timers and Delays
  10373.  
  10374.           Tx_Char_Timeout          Tx_Char_Timeout
  10375.  
  10376.           Declaration:
  10377.           CONST Tx_Char_Timeout : INTEGER = 500;
  10378.  
  10379.           Maximum time  to wait  until the  previous character has been sent in
  10380.           milliseconds. See also procedure 'DC_Write'. 
  10381.  
  10382.  
  10383.           Rts_Cts_Timeout          Rts_Cts_Timeout
  10384.  
  10385.           Declaration:
  10386.           CONST Rts_Cts_Timeout : INTEGER = 500;
  10387.  
  10388.           Maximum time in  milliseconds  to  wait  for  'Clear  to  Send' after
  10389.           'Request to send' was raised. See also function 'Tx_Ok'.
  10390.  
  10391.  
  10392.           Rts_Cts_Delay          Rts_Cts_Delay
  10393.  
  10394.           Declaration:
  10395.           CONST Rts_Cts_Delay : INTEGER = 0;
  10396.  
  10397.           Minimum time in milliseconds between the raising of 'Request to send'
  10398.           and sending of the first character.
  10399.           This option is required with some datasets where 'clear to  send' may
  10400.           come  up  before  the  modem  is  actually ready to receive the first
  10401.           character.
  10402.  
  10403.  
  10404.           Rts_Holdover          Rts_Holdover
  10405.  
  10406.           Declaration:
  10407.           CONST Rts_Holdover : INTEGER = 0;
  10408.  
  10409.           The time in milliseconds to wait before 'Request to send'  is dropped
  10410.           after the last character has been transmitted.
  10411.           This option  is required with some datasets in order to avoid datacom
  10412.           line noise. 
  10413.  
  10414.  
  10415.  
  10416.  
  10417.  
  10418.  
  10419.  
  10420.  
  10421.  
  10422.           CHAPTER IV, SCL Data Communication subsystem             page 158          CHAPTER IV, SCL Data Communication subsystem             page 158
  10423.  
  10424.  
  10425.  
  10426.  
  10427.  
  10428.  
  10429.  
  10430.  
  10431.  
  10432.  
  10433.  
  10434.  
  10435.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10436.  
  10437.  
  10438.                          Data Communications Control Characters                         Data Communications Control Characters
  10439.  
  10440.  
  10441.           The  following  definitions  have   been  provided   to  enhance  the
  10442.           readability  and  to  facilitate  the  writing  of  terminal and line
  10443.           protocols. 
  10444.  
  10445.  
  10446.           CONST    
  10447.             Nul       = $0;
  10448.             Soh       = $1;
  10449.             Stx       = $2;
  10450.             Etx       = $3;
  10451.             Eot       = $4;
  10452.             Enq       = $5;
  10453.             Ack       = $6;
  10454.             Bel       = $7;
  10455.             Con       = $7;
  10456.             Bs        = $8;
  10457.             Ht        = $9;
  10458.             Lf        = $a;
  10459.             Vt        = $b;
  10460.             Ff        = $c;
  10461.             Cr        = $d;
  10462.             S0        = $e;
  10463.             S1        = $f;
  10464.             Dle       = $10;
  10465.             Dc1       = $11;
  10466.             Dc2       = $12;
  10467.             Dc3       = $13;
  10468.             Dc4       = $14;
  10469.             Nak       = $15;
  10470.             Syn       = $16;
  10471.             Etb       = $17;
  10472.             Can       = $18;
  10473.             Em        = $19;
  10474.             Sub       = $1a;
  10475.             Esc       = $1b;
  10476.             Fs        = $1c;
  10477.             Gs        = $1d;
  10478.             Rs        = $1e;
  10479.             Us        = $1f;
  10480.             Pol       = $70;
  10481.             Sel       = $71;
  10482.             Fsl       = $73;
  10483.             Bsl       = $74;
  10484.             Del       = $7f;
  10485.  
  10486.  
  10487.  
  10488.           CHAPTER IV, SCL Data Communication subsystem             page 159          CHAPTER IV, SCL Data Communication subsystem             page 159
  10489.  
  10490.  
  10491.  
  10492.  
  10493.  
  10494.  
  10495.  
  10496.  
  10497.  
  10498.  
  10499.  
  10500.  
  10501.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10502.  
  10503.  
  10504.                                    Other Declarations                                   Other Declarations
  10505.  
  10506.  
  10507.           DC_Buff_Size          DC_Buff_Size
  10508.  
  10509.           Declaration:
  10510.           CONST DC_Buff_Size = 2500;
  10511.  
  10512.           This is the  size  of  the  circular  buffer  in  which  the received
  10513.           characters are written by the interrupt service routine. 
  10514.  
  10515.  
  10516.  
  10517.           DC_Rx_Buffer          DC_Rx_Buffer
  10518.  
  10519.           Declaration:
  10520.           VAR DC_Rx_Buffer : ARRAY[0..DC_Buff_Size] of BYTE;
  10521.  
  10522.           The circular buffer used by the interrupt service routine. 
  10523.  
  10524.  
  10525.                        
  10526.           DC_Rx_Buff_Bottom          DC_Rx_Buff_Bottom
  10527.  
  10528.           Declaration:
  10529.           CONST DC_Rx_Buff_Bottom : INTEGER = 0;
  10530.  
  10531.           Points  to  the  'bottom'  (=  the  first  character  to  be read) of
  10532.           DC_Rx_Buffer. If DC_Rx_Buff_Bottom is  equal  to  DC_Rx_Buff_Top then
  10533.           the receive buffer is empty. 
  10534.  
  10535.  
  10536.                        
  10537.           DC_Rx_Buff_Top          DC_Rx_Buff_Top
  10538.  
  10539.           Declaration:
  10540.           CONST DC_Rx_Buff_Top : INTEGER = 0;
  10541.  
  10542.           Points to the 'Top' (= the position where the ISR will write the next
  10543.           character received) of DC_Rx_Buffer. If DC_Rx_Buff_Bottom is equal to
  10544.           DC_Rx_Buff_Top then the receive buffer is empty. 
  10545.                        
  10546.                        
  10547.                        
  10548.  
  10549.  
  10550.  
  10551.  
  10552.  
  10553.  
  10554.           CHAPTER IV, SCL Data Communication subsystem             page 160          CHAPTER IV, SCL Data Communication subsystem             page 160
  10555.  
  10556.  
  10557.  
  10558.  
  10559.  
  10560.  
  10561.  
  10562.  
  10563.  
  10564.  
  10565.  
  10566.  
  10567.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10568.  
  10569.                        
  10570.           Bcc          Bcc
  10571.  
  10572.           Declaration:
  10573.           VAR Bcc : Byte;
  10574.  
  10575.           Used to calculate the block check character. 
  10576.  
  10577.  
  10578.                        
  10579.           DC_Open          DC_Open
  10580.  
  10581.           Declaration:
  10582.           CONST Dc_Open : BOOLEAN = FALSE;
  10583.  
  10584.           This  Typed  Constant  is  set  to  TRUE if the SCL datacom system is                Typed  Constant
  10585.           initialized. 
  10586.  
  10587.  
  10588.  
  10589.  
  10590.  
  10591.  
  10592.  
  10593.  
  10594.  
  10595.  
  10596.  
  10597.  
  10598.  
  10599.  
  10600.  
  10601.  
  10602.  
  10603.  
  10604.  
  10605.  
  10606.  
  10607.  
  10608.  
  10609.  
  10610.  
  10611.  
  10612.  
  10613.  
  10614.  
  10615.  
  10616.  
  10617.  
  10618.  
  10619.  
  10620.           CHAPTER IV, SCL Data Communication subsystem             page 161          CHAPTER IV, SCL Data Communication subsystem             page 161
  10621.  
  10622.  
  10623.  
  10624.  
  10625.  
  10626.  
  10627.  
  10628.  
  10629.  
  10630.  
  10631.  
  10632.  
  10633.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10634.  
  10635.  
  10636.  
  10637.  
  10638.  
  10639.  
  10640.  
  10641.  
  10642.  
  10643.  
  10644.  
  10645.  
  10646.  
  10647.  
  10648.  
  10649.  
  10650.  
  10651.  
  10652.  
  10653.  
  10654.  
  10655.  
  10656.  
  10657.                                  SCL Data Communications                                 SCL Data Communications                       
  10658.                        
  10659.                        
  10660.                                 Procedures and Functions                                Procedures and Functions                                                        
  10661.  
  10662.  
  10663.  
  10664.  
  10665.  
  10666.  
  10667.  
  10668.  
  10669.  
  10670.  
  10671.  
  10672.  
  10673.  
  10674.  
  10675.  
  10676.  
  10677.  
  10678.  
  10679.  
  10680.  
  10681.  
  10682.  
  10683.  
  10684.  
  10685.  
  10686.           CHAPTER IV, SCL Data Communication subsystem             page 162          CHAPTER IV, SCL Data Communication subsystem             page 162
  10687.  
  10688.  
  10689.  
  10690.  
  10691.  
  10692.  
  10693.  
  10694.  
  10695.  
  10696.  
  10697.  
  10698.  
  10699.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10700.  
  10701.  
  10702.                              Initializing and Terminating DC                             Initializing and Terminating DC
  10703.  
  10704.            
  10705.           PROCEDURE Open_Dc(VAR Result:INTEGER);          PROCEDURE Open_Dc(VAR Result:INTEGER);
  10706.  
  10707.           This procedure initializes the  datacom  subsystem  and  installs the
  10708.           Interrupt Service  Routine to receive characters. All parameters like
  10709.           line speed, parity etc must be correctly set before this procedure is
  10710.           called.
  10711.           Both Line  and Modem  status after the initialization are returned in
  10712.           'Result'. The meaning of 'Result' is as follows:
  10713.  
  10714.  
  10715.                       
  10716.           Bit  High order byte (line status)        Low order Byte (Modem)            Bit  High order byte (line status)        Low order Byte (Modem)  
  10717.           7    Time_Out Error                       Rx line signal detect 
  10718.           6    Transfer Shift Register empty        Ring indicator
  10719.           5    Transfer Holding Register empty      Data set ready
  10720.           4    Break_Detect error                   Clear to send
  10721.           3    Framing error                        Delta RxLSD
  10722.           2    Parity error                         Trailing edge RI 
  10723.           1    Overrun error                        Delta DSR
  10724.           0    Data Ready                           Delta CTS
  10725.  
  10726.  
  10727.  
  10728.  
  10729.  
  10730.  
  10731.           PROCEDURE Close_Dc;          PROCEDURE Close_Dc;
  10732.  
  10733.           This procedure must be  called  to  terminate  the  DC  subsystem. It
  10734.           deinstalls the interrupt service routine and reinstates the interrupt
  10735.           vector to its original content. Failing  to call  this routine before
  10736.           the program  is finished  can lead  to strange effects and may make a
  10737.           system reboot necessary.
  10738.  
  10739.  
  10740.  
  10741.  
  10742.  
  10743.  
  10744.  
  10745.  
  10746.  
  10747.  
  10748.  
  10749.  
  10750.  
  10751.  
  10752.           CHAPTER IV, SCL Data Communication subsystem             page 163          CHAPTER IV, SCL Data Communication subsystem             page 163
  10753.  
  10754.  
  10755.  
  10756.  
  10757.  
  10758.  
  10759.  
  10760.  
  10761.  
  10762.  
  10763.  
  10764.  
  10765.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10766.  
  10767.  
  10768.                                       Sending Data                                      Sending Data
  10769.  
  10770.  
  10771.           PROCEDURE Send_Char(Code:BYTE ; VAR OK:BOOLEAN);          PROCEDURE Send_Char(Code:BYTE ; VAR OK:BOOLEAN);
  10772.  
  10773.           This procedure  raises  RTS,  and,  once  CTS  is  raised,  sends the
  10774.           character with  the ASCII  code of  'Code' onto  the RS232 interface.
  10775.           Then RTS  is dropped  again. If  either CTS  does not  come up within
  10776.           'RTS_CTS_Timeout'  or   if  the   character  cannot  be  sent  within
  10777.           'Tx_Char_Timeout' then the operation is aborted and 'Ok'  is returned
  10778.           FALSE.
  10779.                        
  10780.           Example:          Example:
  10781.           Send_Char(EOT,Ok); {sends an 'EOT' character (ASCII 4) } 
  10782.  
  10783.  
  10784.  
  10785.           PROCEDURE Send_String(Data:String255;VAR OK:BOOLEAN);          PROCEDURE Send_String(Data:String255;VAR OK:BOOLEAN);
  10786.  
  10787.           This procedure  is similar to 'Send_Char' except that a string (Data)
  10788.           is sent. 
  10789.                        
  10790.           Example:           Example:
  10791.           Send_String('Hello',Ok); 
  10792.  
  10793.  
  10794.  
  10795.           PROCEDURE Send_Buffer(VAR Tx_Buff;          PROCEDURE Send_Buffer(VAR Tx_Buff;
  10796.                                 Buff_Start,Buff_Length,Bcc_Add:INTEGER;                                    Buff_Start,Buff_Length,Bcc_Add:INTEGER;    
  10797.                                 Head:String255; var Ok:BOOLEAN);                                Head:String255; var Ok:BOOLEAN);
  10798.  
  10799.           This procedure first sends the string 'Head', then an 'STX' character
  10800.           (ASCII 2)  and thereafter 'Buff_Length' bytes  of 'Tx_Buff', starting
  10801.           at a displacement of 'Buff_Start' bytes. Then an  'ETX' (ASCII  3) is
  10802.           sent. If  'BCC_Set' is  true, a  block check  character follows. This
  10803.           block check character is calculated by adding all characters starting
  10804.           from  the  'STX'  up  to  and  including the 'ETX' to Bcc_Add without
  10805.           Carry, i.e using an 'XOR' function. 'Bcc_add' can be used  to include
  10806.           'Head' into the Bcc calculation if required.
  10807.           Error  handling  etc  are  identical  to  the  those  described under
  10808.           'Send_String'.  The   data  contained   in  Tx_Buff   must  be  bytes
  10809.           representing  the  ASCII  codes  of  the  characters to be sent. This
  10810.           procedure  is  compatible  with   the  most   commonly  used     data
  10811.           communication protocols. 
  10812.  
  10813.           Note:          Note:
  10814.           An example for 'Send_Buffer' is shown on the next page.
  10815.  
  10816.  
  10817.  
  10818.           CHAPTER IV, SCL Data Communication subsystem             page 164          CHAPTER IV, SCL Data Communication subsystem             page 164
  10819.  
  10820.  
  10821.  
  10822.  
  10823.  
  10824.  
  10825.  
  10826.  
  10827.  
  10828.  
  10829.  
  10830.  
  10831.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10832.  
  10833.                        
  10834.           Example:          Example:
  10835.  
  10836.  
  10837.           PROCEDURE Example;
  10838.           VAR
  10839.             My_Buffer:ARRAY[0..2000] of bytes;
  10840.             My_Header:String255;
  10841.             Write_Ok :BOOLEAN;
  10842.           CONST
  10843.             My_String:String255 = 'Hello';
  10844.           BEGIN;
  10845.             BCC_Set:=TRUE;              {send block check character}  
  10846.             My_Header:=SOH + 'A' + '1'; {a typical header for poll/select} 
  10847.             MOVE(My_String,My_Buffer,LENGTH(My_String)+1);   {first  byte is   
  10848.                                                    length         of        the
  10849.           Send_Buffer(My_Buffer,1,LENGTH(My_String),0,My_Header,Write_Ok); END;
  10850.             {displacement of 1 to exclude the byte containing length}         
  10851.           The above procedure causes the following string to be sent: 
  10852.           <SOH>A1<STX>Hello<ETX><BCC>
  10853.  
  10854.           The BCC is calculated without header (starting from 'STX'). If  it is
  10855.           required to  include the  header into  the BCC  calculation,  its BCC
  10856.           must be  calculated  externally  and  passed  to  'Send_Buffer'   via
  10857.           'BCC_Add'.
  10858.           For this  example the  BCC for  the header  could be calculated using
  10859.           the following statement:
  10860.  
  10861.           Head_Bcc := SOH XOR ORD('A') XOR ORDd('1');
  10862.  
  10863.  
  10864.  
  10865.  
  10866.  
  10867.  
  10868.  
  10869.  
  10870.  
  10871.  
  10872.  
  10873.  
  10874.  
  10875.  
  10876.  
  10877.  
  10878.  
  10879.  
  10880.  
  10881.  
  10882.  
  10883.  
  10884.           CHAPTER IV, SCL Data Communication subsystem             page 165          CHAPTER IV, SCL Data Communication subsystem             page 165
  10885.  
  10886.  
  10887.  
  10888.  
  10889.  
  10890.  
  10891.  
  10892.  
  10893.  
  10894.  
  10895.  
  10896.  
  10897.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10898.  
  10899.  
  10900.                                      Receiving Data                                     Receiving Data
  10901.  
  10902.  
  10903.           PROCEDURE Receive_Char(VAR Code:INTEGER; VAR Ok:BOOLEAN);           PROCEDURE Receive_Char(VAR Code:INTEGER; VAR Ok:BOOLEAN); 
  10904.  
  10905.           Returns the ASCII Code  of  the  character  in  the  circular receive
  10906.           buffer  pointed  to  by  the  'Bottom'  pointer  (This  character was
  10907.           received from datacom  and  put  into  the  buffer  by  the Interrupt
  10908.           Service    Routine).    The    'Bottom'  buffer  pointer    is   then
  10909.           incremented.
  10910.           If the circular receive buffer does not contain any characters (Top =
  10911.           Bottom) then 'Ok' is returned FALSE.
  10912.  
  10913.  
  10914.  
  10915.  
  10916.  
  10917.  
  10918.  
  10919.  
  10920.  
  10921.  
  10922.  
  10923.  
  10924.  
  10925.  
  10926.  
  10927.  
  10928.  
  10929.  
  10930.  
  10931.  
  10932.  
  10933.  
  10934.  
  10935.  
  10936.  
  10937.  
  10938.  
  10939.  
  10940.  
  10941.  
  10942.  
  10943.  
  10944.  
  10945.  
  10946.  
  10947.  
  10948.  
  10949.  
  10950.           CHAPTER IV, SCL Data Communication subsystem             page 166          CHAPTER IV, SCL Data Communication subsystem             page 166
  10951.  
  10952.  
  10953.  
  10954.  
  10955.  
  10956.  
  10957.  
  10958.  
  10959.  
  10960.  
  10961.  
  10962.  
  10963.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  10964.  
  10965.  
  10966.                                      Other Functions                                     Other Functions
  10967.  
  10968.           PROCEDURE Disable_Port;          PROCEDURE Disable_Port;
  10969.  
  10970.           This Procedure  can be  called to disable the RS232 port temporarily,
  10971.           for example to change parameters.
  10972.  
  10973.  
  10974.           PROCEDURE Enable_Port;          PROCEDURE Enable_Port
  10975.  
  10976.           This  procedure   reinstates  datacom   if  it   was  disabled  using
  10977.           'Disable_Port'. 
  10978.  
  10979.  
  10980.           PROCEDURE Clear_Rx_Buffer;          PROCEDURE Clear_Rx_Buffer;
  10981.  
  10982.           This Procedure  clears the  circular receive  buffer, i.e it sets Top
  10983.           equal to Bottom. 
  10984.  
  10985.  
  10986.           PROCEDURE Set_DC_Params;          PROCEDURE Set_DC_Params;
  10987.  
  10988.           This  Procedure  must  be  called  if  data  communication parameters
  10989.           (speed, parity etc) have been changed. 
  10990.           The  following  sequence  of  procedures  is  recommended  to  change
  10991.           communication parameters:
  10992.  
  10993.           Disable_Port;
  10994.           DC_Speed:=4800;
  10995.           Set_DC_Params;
  10996.           Enable_Port;
  10997.           Clear_RX_Buffer;
  10998.  
  10999.  
  11000.           PROCEDURE DC_Diagnose(On:BOOLEAN);          PROCEDURE DC_Diagnose(On:BOOLEAN);
  11001.  
  11002.           If 'On' is TRUE, the loopback feature for diagnostic testing  will be
  11003.           set. This causes the output of the 'Send' shift register in the RS232
  11004.           adapter to be directly  looped back  to the  'Receive' shift register
  11005.           input, i.e all data transmitted is immediately received again. If 'On
  11006.           is FALSEl the loopback feature will be reset and normal  operation is
  11007.           resumed. 
  11008.           This feature can be used for test purposes. 
  11009.  
  11010.  
  11011.           PROCEDURE Get_Dc_Status(VAR Status:INTEGER);          PROCEDURE Get_Dc_Status(VAR Status:INTEGER);
  11012.  
  11013.           This procedure returns the present line and modem status. The meaning
  11014.           of 'Status' is the same as described under 'Open_Dc'. 
  11015.  
  11016.           CHAPTER IV, SCL Data Communication subsystem             page 167          CHAPTER IV, SCL Data Communication subsystem             page 167
  11017.  
  11018.  
  11019.  
  11020.  
  11021.  
  11022.  
  11023.  
  11024.  
  11025.  
  11026.  
  11027.  
  11028.  
  11029.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11030.  
  11031.  
  11032.                                    Low Level Routines                                   Low Level Routines
  11033.  
  11034.  
  11035.           PROCEDURE Set_Dtr(On:BOOLEAN);          PROCEDURE Set_Dtr(On:BOOLEAN);
  11036.  
  11037.           Depending on the the status of  'On', this  procedure sets  or resets
  11038.           Data terminal  Ready. If  'On' is FALSE, Request to send will also be
  11039.           dropped.
  11040.  
  11041.  
  11042.           PROCEDURE Set_Rts(On:BOOLEAN);          PROCEDURE Set_Rts(On:BOOLEAN);
  11043.  
  11044.           This procedure raises or drops Request to send.
  11045.  
  11046.  
  11047.           PROCEDURE DC_Write(Code:BYTE;VAR Ok:BOOLEAN);          PROCEDURE DC_Write(Code:BYTE;VAR Ok:BOOLEAN);
  11048.  
  11049.           This procedure sends the character indicated by 'Code' onto the RS232
  11050.           Interface. It  does not  manipulate RTS as the appropriate High Level
  11051.           Routines do (Send_...). The  setting  and  resetting  of  RTS  can be
  11052.           performed with 'Tx_Ok' and 'Set_Rts'.
  11053.           If  the   Character  cannot  be  sent  before  'Tx_Char_Timeout'  the
  11054.           operation is aborted and 'Ok' is returned FALSE. 
  11055.  
  11056.  
  11057.           FUNCTION Tx_Ok:BOOLEAN;           FUNCTION Tx_Ok:BOOLEAN;
  11058.  
  11059.           Tx_Ok raises 'Request to send' and  returns  TRUE  if  Clear  to Send
  11060.           comes up before 'Rts_Cts_Timeout'.
  11061.  
  11062.  
  11063.           FUNCTION Dsr:BOOLEAN;           FUNCTION Dsr:BOOLEAN;
  11064.  
  11065.           Dsr returns the present status of Data set ready. 
  11066.  
  11067.  
  11068.           FUNCTION Cts:BOOLEAN;           FUNCTION Cts:BOOLEAN;
  11069.  
  11070.           Cts returns the present status of Clear to send.
  11071.  
  11072.  
  11073.           PROCEDURE DC_Break;          PROCEDURE DC_Break;
  11074.  
  11075.           This procedure causes a 'Break' to be sent.
  11076.  
  11077.  
  11078.  
  11079.  
  11080.  
  11081.  
  11082.           CHAPTER IV, SCL Data Communication subsystem             page 168          CHAPTER IV, SCL Data Communication subsystem             page 168
  11083.  
  11084.  
  11085.  
  11086.  
  11087.  
  11088.  
  11089.  
  11090.  
  11091.  
  11092.  
  11093.  
  11094.  
  11095.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11096.  
  11097.  
  11098.           PROCEDURE DC_Isr;          PROCEDURE DC_Isr;
  11099.  
  11100.           This is  the Interrupt  service routine  for interrupt  Hex 0C. It is
  11101.           called by the IRQ4  whenever a  character has  been received  via the
  11102.           RS232 Interface. DC_Isr fetches this character and places it into the
  11103.           circular  Receive  buffer   where   it   the   can   be   read  using
  11104.           'Receive_Char'. DC_Isr may not be called directly by a user program. 
  11105.  
  11106.  
  11107.  
  11108.  
  11109.  
  11110.  
  11111.  
  11112.  
  11113.  
  11114.  
  11115.  
  11116.  
  11117.  
  11118.  
  11119.  
  11120.  
  11121.  
  11122.  
  11123.  
  11124.  
  11125.  
  11126.  
  11127.  
  11128.  
  11129.  
  11130.  
  11131.  
  11132.  
  11133.  
  11134.  
  11135.  
  11136.  
  11137.  
  11138.  
  11139.  
  11140.  
  11141.  
  11142.  
  11143.  
  11144.  
  11145.  
  11146.  
  11147.  
  11148.           CHAPTER IV, SCL Data Communication subsystem             page 169          CHAPTER IV, SCL Data Communication subsystem             page 169
  11149.  
  11150.  
  11151.  
  11152.  
  11153.  
  11154.  
  11155.  
  11156.  
  11157.  
  11158.  
  11159.  
  11160.  
  11161.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11162.  
  11163.  
  11164.  
  11165.  
  11166.  
  11167.  
  11168.  
  11169.  
  11170.  
  11171.  
  11172.  
  11173.  
  11174.  
  11175.  
  11176.  
  11177.  
  11178.  
  11179.  
  11180.  
  11181.  
  11182.  
  11183.  
  11184.                                  SCL Data communications                                 SCL Data communications                       
  11185.                        
  11186.                        
  11187.                        
  11188.                        
  11189.                                     Example Programs                                    Example Programs                                                    
  11190.  
  11191.  
  11192.  
  11193.  
  11194.  
  11195.  
  11196.  
  11197.  
  11198.  
  11199.  
  11200.  
  11201.  
  11202.  
  11203.  
  11204.  
  11205.  
  11206.  
  11207.  
  11208.  
  11209.  
  11210.  
  11211.  
  11212.  
  11213.  
  11214.           Chapter IV, SCL Data Communication example programs          page 170          Chapter IV, SCL Data Communication example programs          page 170
  11215.  
  11216.  
  11217.  
  11218.  
  11219.  
  11220.  
  11221.  
  11222.  
  11223.  
  11224.  
  11225.  
  11226.  
  11227.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11228.  
  11229.  
  11230.           A Simple Line Monitor (SAMPLE7.PAS)          A Simple Line Monitor (SAMPLE7.PAS)
  11231.  
  11232.           In this  example program the SCL datacom routines are used to build a
  11233.           simple  datacom  line  monitor  which  interprets  and  displays  and
  11234.           interprets the traffic on a datacom line. 
  11235.           The  major  datacom  parameters  like  baudrate,  wordsize, number of
  11236.           stopbits  and  parity  can   be  dynamically   changed  while     the
  11237.           interpretation of the line traffic is instantly visible. This program
  11238.           is therefore a neat tool to  rapidly decipher  the parameter settings
  11239.           of the  datacom line  you are  connected to.  In order  to verify the
  11240.           functionality of this program, just connect  COM1: to  a busy datacom
  11241.           line and start it. 
  11242.           Below you  find the complete source code of the line monitor program,
  11243.           a detailed description follows afterwards. 
  11244.  
  11245.  
  11246.  
  11247.  
  11248.  
  11249.  
  11250.  
  11251.  
  11252.  
  11253.  
  11254.  
  11255.  
  11256.  
  11257.  
  11258.  
  11259.  
  11260.  
  11261.  
  11262.  
  11263.  
  11264.  
  11265.  
  11266.  
  11267.  
  11268.  
  11269.  
  11270.  
  11271.  
  11272.  
  11273.  
  11274.  
  11275.  
  11276.  
  11277.  
  11278.  
  11279.  
  11280.           Chapter IV, SCL Data Communication example programs          page 171          Chapter IV, SCL Data Communication example programs          page 171
  11281.  
  11282.  
  11283.  
  11284.  
  11285.  
  11286.  
  11287.  
  11288.  
  11289.  
  11290.  
  11291.  
  11292.  
  11293.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11294.  
  11295.  
  11296.                                  Listing of SAMPLE7.PAS                                 Listing of SAMPLE7.PAS
  11297.  
  11298.  
  11299.           PROGRAM dc_monitor;  {a simple datacom line monitor}
  11300.  
  11301.           uses scl;    {make SCL accessible}
  11302.  
  11303.           VAR
  11304.             Ok      : BOOLEAN;
  11305.             Wrkstr  : String80;
  11306.             Temp    : INTEGER;
  11307.             Freeze  : BOOLEAN;
  11308.  
  11309.           FUNCTION Xlate(Cn:INTEGER):String10;  {datacom control character} VAR
  11310.           Tmp:String10;                     {interpretation}
  11311.           BEGIN;
  11312.             CASE Cn OF
  11313.                $0 : Tmp:='<NUL>';
  11314.                $1 : Tmp:='<SOH>';
  11315.                $2 : Tmp:='<STX>';
  11316.                $3 : Tmp:='<ETX>';
  11317.                $4 : Tmp:='<EOT>';
  11318.                $5 : Tmp:='<ENQ>';
  11319.                $6 : Tmp:='<ACK>';
  11320.                $7 : Tmp:='<BEL>';
  11321.                $8 : Tmp:='<BS>';
  11322.                $9 : Tmp:='<HT>';
  11323.                $a : Tmp:='<LF>';
  11324.                $b : Tmp:='<VT>';
  11325.                $c : Tmp:='<FF>';
  11326.                $d : Tmp:='<CR>';
  11327.                $e : Tmp:='<S0>';
  11328.                $f : Tmp:='<S1>';
  11329.                $10: Tmp:='<DLE>';
  11330.                $11: Tmp:='<DC1>';
  11331.                $12: Tmp:='<DC2>';
  11332.                $13: Tmp:='<DC3>';
  11333.                $14: Tmp:='<DC4>';
  11334.                $15: Tmp:='<NAK>';
  11335.                $16: Tmp:='<SYN>';
  11336.                $17: Tmp:='<ETB>';
  11337.                $18: Tmp:='<CAN>';
  11338.                $19: Tmp:='<EM>';
  11339.                $1a: Tmp:='<SUB>';
  11340.                $1b: Tmp:='<ESC>';
  11341.                $1c: Tmp:='<FS>';
  11342.                $1d: Tmp:='<GS>';
  11343.                $1e: Tmp:='<RS>';
  11344.  
  11345.  
  11346.           Chapter IV, SCL Data Communication example programs          page 172          Chapter IV, SCL Data Communication example programs          page 172
  11347.  
  11348.  
  11349.  
  11350.  
  11351.  
  11352.  
  11353.  
  11354.  
  11355.  
  11356.  
  11357.  
  11358.  
  11359.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11360.  
  11361.  
  11362.                $1f: Tmp:='<US>';
  11363.                $70: Tmp:='<POL>';
  11364.                $71: Tmp:='<SEL>';
  11365.                $72: Tmp:='<FSL>';
  11366.                $73: Tmp:='<BSL>';
  11367.                $7f: Tmp:='<DEL>';
  11368.                $80..$ff:
  11369.                     Tmp:='<' + St(Cn) + '>';    {return character code}   ELSE
  11370.                     Tmp:=CHR(Cn);               {return character}
  11371.             END;
  11372.             Xlate:=Tmp;
  11373.           END;
  11374.  
  11375.           {$F+} {far call option required for SCL background tasks}
  11376.           PROCEDURE Lp_Background_Task;        {updates the line traffic field}
  11377.           BEGIN;
  11378.             IF NOT Freeze THEN               {F9 toggles Freeze}
  11379.               BEGIN;
  11380.                 REPEAT
  11381.                   Receive_Char(Temp,Ok);     {receive char from datacom}   
  11382.                   IF Ok THEN                 {there was one}
  11383.                     BEGIN;
  11384.                       Wrkstr:=Wrkstr+Xlate(Temp);  {interpret it}
  11385.                       WHILE LENGTH(Wrkstr) > 76 DO {cut off oldest}
  11386.                         DELETE(Wrkstr,1,1);
  11387.                     END;
  11388.                 UNTIL NOT Ok;                      {no more characters}    
  11389.                     W_Cont(7,Wrkstr);            {update traffic field}
  11390.               END;
  11391.           END;
  11392.           {$F-}   {reset far calls again}
  11393.  
  11394.  
  11395.  
  11396.  
  11397.  
  11398.  
  11399.  
  11400.  
  11401.  
  11402.  
  11403.  
  11404.  
  11405.  
  11406.  
  11407.  
  11408.  
  11409.  
  11410.  
  11411.  
  11412.           Chapter IV, SCL Data Communication example programs          page 173          Chapter IV, SCL Data Communication example programs          page 173
  11413.  
  11414.  
  11415.  
  11416.  
  11417.  
  11418.  
  11419.  
  11420.  
  11421.  
  11422.  
  11423.  
  11424.  
  11425.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11426.  
  11427.  
  11428.           PROCEDURE Update_Params;         {spacebar pressed}
  11429.           VAR Sp:INTEGER;
  11430.           BEGIN;
  11431.             CASE Active_Field OF
  11432.               1: BEGIN;                   {linespeed}
  11433.                    Sp:=Nr(G_Cont(1));     {get current speed}
  11434.                    IF Sp =  110 THEN Sp:= 150 ELSE
  11435.                    IF Sp =  150 THEN Sp:= 300 ELSE {switch}
  11436.                    IF Sp =  300 THEN Sp:= 600 ELSE  {to}
  11437.                    IF Sp =  600 THEN Sp:=1200 ELSE  {next}
  11438.                    IF Sp = 1200 THEN Sp:=2400 ELSE  {speed}
  11439.                    IF Sp = 2400 THEN Sp:=4800 ELSE
  11440.                    IF Sp = 4800 THEN Sp:=9600 ELSE
  11441.                       Sp:=110;
  11442.                    Dc_Speed:=Sp;                    {update speed}
  11443.                    W_Cont(1,St(Sp));                {update field}
  11444.                  END;
  11445.               2: BEGIN;                             {char size}
  11446.                    Sp:=Nr(G_Cont(2));
  11447.                    Sp:=Sp+1;
  11448.                    IF Sp > 8 THEN
  11449.                      Sp:=5;
  11450.                    Dc_Charsize:=Sp;                 {update param}
  11451.                    W_Cont(2,St(Sp));                {update field}
  11452.                  END;
  11453.               3: BEGIN;
  11454.                    Sp:=Nr(G_Cont(3));               {stop bits}
  11455.                    IF Sp = 1 THEN Sp:=2 ELSE Sp:=1;
  11456.                    Dc_Stopbits:=Sp;                 {update param}
  11457.                    W_Cont(3,St(Sp));                {update field}
  11458.                  END;
  11459.               4: IF G_Cont(4) = 'Even'THEN          {parity}
  11460.                    BEGIN;
  11461.                      W_Cont(4,'None');
  11462.                      Dc_Parity:='N';
  11463.                    END
  11464.                  ELSE
  11465.                  IF G_Cont(4) = 'None'THEN
  11466.                    BEGIN;
  11467.                      W_Cont(4,'Odd');
  11468.                      Dc_Parity:='O';
  11469.                    END
  11470.                  ELSE
  11471.                    BEGIN;
  11472.                      W_Cont(4,'Even');
  11473.                      Dc_Parity:='E';
  11474.                    END;
  11475.             END;
  11476.  
  11477.  
  11478.           Chapter IV, SCL Data Communication example programs          page 174          Chapter IV, SCL Data Communication example programs          page 174
  11479.  
  11480.  
  11481.  
  11482.  
  11483.  
  11484.  
  11485.  
  11486.  
  11487.  
  11488.  
  11489.  
  11490.  
  11491.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11492.  
  11493.  
  11494.             Disable_Port;            {temporary disable datacom}
  11495.             Set_Dc_Params;           {set new dc params}
  11496.             Enable_Port;             {enable datacom again}
  11497.           END;
  11498.  
  11499.           PROCEDURE Handle_Uf;
  11500.           BEGIN;
  11501.             IF Char_Code = 32 THEN    {Spacebar pressed}
  11502.               BEGIN;
  11503.                 Update_Params;        {update dc params}
  11504.                 Char_Code:=Code_Noop; {no further action}
  11505.               END
  11506.             ELSE
  11507.             IF Char_Code = Code_F9 THEN   {F9 Pressed}
  11508.               BEGIN;
  11509.                 Freeze:= NOT Freeze;      {toggle freeze}
  11510.                 Char_Code:=Code_Noop;     {no further action}
  11511.               END
  11512.             
  11513.             ELSE
  11514.             IF Char_Code = Code_Return   THEN Char_Code:=Code_Tab ELSE   
  11515.             IF Char_Code = Code_Escape   THEN Char_Code:=Code_Noop;
  11516.           END;
  11517.  
  11518.  
  11519.           PROCEDURE Handle_First;   {This Procedure handles format
  11520.                                      'first'.} 
  11521.           BEGIN;
  11522.             Select_Format('main');
  11523.             W_Cont(1,St(Dc_Speed));        {prefill}
  11524.             W_Cont(2,St(Dc_Charsize));     {the}
  11525.             W_Cont(3,St(Dc_Stopbits));     {fields}
  11526.             IF Dc_Parity = 'E' THEN W_Cont(4,'Even') ELSE
  11527.             IF Dc_Parity = 'O' THEN W_Cont(4,'Odd') ELSE
  11528.                W_Cont(4,'None');
  11529.             Freeze:=FALSE;          {display incoming traffic}
  11530.             Display_Format(0,0);
  11531.             REPEAT
  11532.               Handle_Format;        {Complete Loop to handle format input} 
  11533.               IF User_Function THEN {user key pressed}
  11534.                 Handle_Uf;          {user interrupt procedure}
  11535.             UNTIL Format_Done;        {Either  completely  filled  in  or abort
  11536.           pressed} END;
  11537.  
  11538.  
  11539.  
  11540.  
  11541.  
  11542.  
  11543.  
  11544.           Chapter IV, SCL Data Communication example programs          page 175          Chapter IV, SCL Data Communication example programs          page 175
  11545.  
  11546.  
  11547.  
  11548.  
  11549.  
  11550.  
  11551.  
  11552.  
  11553.  
  11554.  
  11555.  
  11556.  
  11557.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11558.  
  11559.  
  11560.           VAR Res:INTEGER;
  11561.  
  11562.           BEGIN; {of main}
  11563.             Wrkstr:='';
  11564.             Select_Format_File('Sample7');  {initializes SCL and loads the
  11565.                                              format file 'Sample7'}
  11566.             LP_Background_pointer:=@LP_Background_task;  {invoke our screen
  11567.                                              updating routine as low priority
  11568.                                              background task}      
  11569.             Auto_Help_Set:=FALSE;            {reset autohelp feature}     
  11570.             Open_Dc(Res);                    {initialize Datacom system}      
  11571.             Handle_First;              {load,display and handle the format}
  11572.             Close_Formats;                   {terminate SCL}
  11573.             Close_Dc;                        {close Datacom system}
  11574.           END.  {of main}
  11575.  
  11576.  
  11577.  
  11578.  
  11579.  
  11580.  
  11581.  
  11582.  
  11583.  
  11584.  
  11585.  
  11586.  
  11587.  
  11588.  
  11589.  
  11590.  
  11591.  
  11592.  
  11593.  
  11594.  
  11595.  
  11596.  
  11597.  
  11598.  
  11599.  
  11600.  
  11601.  
  11602.  
  11603.  
  11604.  
  11605.  
  11606.  
  11607.  
  11608.  
  11609.  
  11610.           Chapter IV, SCL Data Communication example programs          page 176          Chapter IV, SCL Data Communication example programs          page 176
  11611.  
  11612.  
  11613.  
  11614.  
  11615.  
  11616.  
  11617.  
  11618.  
  11619.  
  11620.  
  11621.  
  11622.  
  11623.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11624.  
  11625.  
  11626.                                Description of SAMPLE7.PAS                               Description of SAMPLE7.PAS
  11627.  
  11628.           Main Program          Main Program
  11629.  
  11630.           The  first   SCL  datacom  routine  being  called  is  'Open_DC'.  It
  11631.           initializes the datacom system  and  installs  the  Interrupt Service                                                              Interrupt Service
  11632.           Routine which  from this  very moment  will receive all characters on          Routine
  11633.           the datacom line and place them into the circular receive buffer. 
  11634.           Then the procedure 'Handle_Main' is called to display  and handle the
  11635.           only  screen  format  in  this program. If 'Handle_Main' is finished,
  11636.           'Close_DC'  is  called  which  terminates  the   datacom  system  and
  11637.           deinstalls the ISR.
  11638.           Finally, 'Close_formats' terminates SCL as usual. 
  11639.  
  11640.  
  11641.           Handle_Main          Handle_Main
  11642.  
  11643.           As soon  as the  format is  selected, its fields are 'prefilled' with
  11644.           the current settings of the main datacom parameters.
  11645.           The format is then displayed.
  11646.           The  datacom  line  traffic  is  interpreted  and  displayed  by  the
  11647.           procedure LP_Background_Task. 
  11648.  
  11649.  
  11650.           Handle_Uf          Handle_Uf
  11651.  
  11652.           'Handle_Uf is  a user  function procedure  acting on several keyboard
  11653.           keys (Spacebar, F9, Return and Escape).
  11654.           In this program,  the spacebar is used to change  datacom parameters.
  11655.           If it  is pressed, the procedure 'Update_Params' is called to process
  11656.           these changes.
  11657.           If F9 is  pressed,  the  boolean  variable  'Freeze'  is  toggled. If
  11658.           'Freeze' is  TRUE, the  display of datacom line traffic is halted for
  11659.           better readability. Pressing F9 again will  restart it.  If Return is
  11660.           pressed, it  is replaced  by a  'Tab' to prevent SCL from terminating
  11661.           the format. 
  11662.           'Escape' is  replaced  by  a  NoOp  (this  program  is  terminated by
  11663.           pressing the 'Abort' key (F10).
  11664.  
  11665.           Update_Params          Update_Params
  11666.  
  11667.           This procedure  is called  whenever the  spacebar is pressed. For the
  11668.           currently  active  field,  it  substitutes  the  present  SCL datacom
  11669.           parameter by the next possible choice and displays its new value. 
  11670.           The datacom port is then temporarily disabled ('Disable_Port') before
  11671.           'Set_DC_Params' is called to activate the new parameter setting.
  11672.           Finally the datacom port is enabled again using 'Enable_Port'. 
  11673.  
  11674.  
  11675.  
  11676.           Chapter IV, SCL Data Communication example programs          page 177          Chapter IV, SCL Data Communication example programs          page 177
  11677.  
  11678.  
  11679.  
  11680.  
  11681.  
  11682.  
  11683.  
  11684.  
  11685.  
  11686.  
  11687.  
  11688.  
  11689.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11690.  
  11691.  
  11692.           LP_Background_Task          LP_Background_Task
  11693.  
  11694.           As long as 'Freeze' is FALSE, this 'Background  processing' procedure
  11695.           permanently updates the line traffic display field (field 7). 
  11696.           It reads  all characters  having been  received since the last update
  11697.           from the circular buffer (using 'Receive_Char'). 
  11698.           Each character is interpreted  via the  function 'Xlate'  (see below)
  11699.           and the  resulting string is then displayed in field 7. If the string
  11700.           to be outputed outgrows the size  of the  display window,  the oldest
  11701.           characters are trimmed, thereby creating a horizontal scroll effect.
  11702.           For  further  informations  on  background processing please refer to
  11703.           Appendix A.
  11704.  
  11705.  
  11706.           Xlate          Xlate
  11707.  
  11708.           This  procedure  makes the line traffic more readable  by translating
  11709.           all ASCII  codes representing   datacom  control characters into more
  11710.           meaningful strings. For example,  character  ASCII  #4  is translated
  11711.           into the string '<EOT>'. 
  11712.           Similarly,  all  codes  above  ASCII  125 are translated into strings
  11713.           showing their ASCII code  in '<  >' brackets  (example: ASCII  130 is
  11714.           returned as '<130>'). 
  11715.           For  all   other  codes  their  corresponding  character  images  are
  11716.           returned. 
  11717.  
  11718.  
  11719.  
  11720.  
  11721.  
  11722.  
  11723.  
  11724.  
  11725.  
  11726.  
  11727.  
  11728.  
  11729.  
  11730.  
  11731.  
  11732.  
  11733.  
  11734.  
  11735.  
  11736.  
  11737.  
  11738.  
  11739.  
  11740.  
  11741.  
  11742.           Chapter IV, SCL Data Communication example programs          page 178          Chapter IV, SCL Data Communication example programs          page 178
  11743.  
  11744.  
  11745.  
  11746.  
  11747.  
  11748.  
  11749.  
  11750.  
  11751.  
  11752.  
  11753.  
  11754.  
  11755.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11756.  
  11757.  
  11758.           A Terminal Emulator Program (SAMPLE 8)          A Terminal Emulator Program (SAMPLE 8)
  11759.  
  11760.  
  11761.           This example program features a  terminal  emulator  program  using a
  11762.           rather    complex  poll  select  protocol,  which  is even capable of
  11763.           handling multiple receive/transmit buffers. 
  11764.           It has been derived from a 'real world' SCL program which works  on a
  11765.           BURROUGHS mainframe  datacom network together with other terminals in
  11766.           a multipoint  environment  at  9600  baud  and  emulates  the datacom
  11767.           protocol of a BURROUGHS TD830 Terminal.
  11768.           This  example  program  is  intended  to  demonstrate  how to write a
  11769.           datacom    protocol,    for  this  reason  the    screen    interface
  11770.           deliberately is  basic and  only consists of a single format with two
  11771.           fields, one where a message to be sent can be entered and another one
  11772.           were all messages received from the mainframe are displayed.
  11773.           Since nearly  every mainframe type uses a different protocol, details
  11774.           specific to  this protocol  are purposely  not covered  in depth, the
  11775.           intention  is  to  concentrate  on  the more common aspects of how to
  11776.           write terminal protocols with the help of SCL. 
  11777.           Nevertheless this example can probably serve as a good basis for your
  11778.           own developments. 
  11779.  
  11780.  
  11781.  
  11782.  
  11783.           Note:           Note:
  11784.            There are  many different possibilities to interface SCL programs to
  11785.           mainframes;  typically  an  SCL  program  will  emulate  the  datacom
  11786.           interface of a terminal and do all other internal tasks using its own
  11787.           resources,  thus  presenting  the   user   with   its   own  powerful
  11788.           capabilities. Dialogues  with the  mainframe are usually performed in
  11789.           the background, automatically and totally transparent to the user. 
  11790.            
  11791.  
  11792.  
  11793.  
  11794.  
  11795.  
  11796.  
  11797.  
  11798.  
  11799.  
  11800.  
  11801.  
  11802.  
  11803.  
  11804.  
  11805.  
  11806.  
  11807.  
  11808.           Chapter IV, SCL Data Communication example programs          page 179          Chapter IV, SCL Data Communication example programs          page 179
  11809.  
  11810.  
  11811.  
  11812.  
  11813.  
  11814.  
  11815.  
  11816.  
  11817.  
  11818.  
  11819.  
  11820.  
  11821.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11822.  
  11823.  
  11824.                               Listing of Example Program 8                              Listing of Example Program 8
  11825.  
  11826.           The following is an extract of SAMPLE8.PAS and shows the  poll select
  11827.           handling routines used by this program.
  11828.  
  11829.  
  11830.  
  11831.           CONST
  11832.             Tx_Buffers = 1;  {nr of xmit buffers; minimum = 1}
  11833.             Rx_Buffers = 1;  {nr of receive buffers; minimum = 1}
  11834.             Dc_Addr_1 : Byte = $33; {first byte of terminal address}   
  11835.             Dc_Addr_2 : Byte = $31; {second byte of terminal address}
  11836.  
  11837.           TYPE
  11838.             Buffer_Data = ARRAY[1..Dc_Buffer_Size] OF Byte;
  11839.             Buffer_Type =  RECORD     {description of rx and tx buffers}       
  11840.                             Len :INTEGER;  {length of data in buffer} 
  11841.                             Data:Buffer_Data;
  11842.                           END;
  11843.             Rx_Buffer_Type= ARRAY[0..Rx_Buffers] OF Buffer_Type;
  11844.             Tx_Buffer_Type= ARRAY[0..Tx_Buffers] OF Buffer_Type;
  11845.  
  11846.           VAR
  11847.             Rx_Buffer_Overflow:BOOLEAN;   {rx data > buffersize}
  11848.             Rx_Buffer:Rx_Buffer_Type;
  11849.             Tx_Buffer:Tx_Buffer_Type;
  11850.             Result_Ok:BOOLEAN;
  11851.             Ch_Code:INTEGER;
  11852.             State:INTEGER;    {used in poll select state machine}
  11853.             Rx_Buff_Wptr,     {rx buffer to be filled next}
  11854.             Rx_Buff_Rptr,     {rx buffer to be read next}
  11855.             Tx_Buff_Wptr,     {tx buffer to be sent last}
  11856.             Tx_Buff_Rptr   : INTEGER;  {tx buffer to be sent first}
  11857.             This_Char_Done:BOOLEAN;    {used in poll select state machine} 
  11858.             Dc_Msg_Header:String255;
  11859.             Cont_String:String255;
  11860.             Char_Ind:INTEGER;
  11861.             Ok : BOOLEAN;
  11862.             Head_Bcc:INTEGER;
  11863.  
  11864.           PROCEDURE Ps_Handler;        {poll select  state machine.  run as  } 
  11865.           BEGIN;                    {background task}
  11866.               IF This_Char_Done THEN  {previous character finished}
  11867.                 Receive_Char(Ch_Code,Ok); {get  next char from dc rx buffer}   
  11868.             IF Ok THEN                {there was a character}
  11869.  
  11870.  
  11871.  
  11872.  
  11873.  
  11874.           Chapter IV, SCL Data Communication example programs          page 180          Chapter IV, SCL Data Communication example programs          page 180
  11875.  
  11876.  
  11877.  
  11878.  
  11879.  
  11880.  
  11881.  
  11882.  
  11883.  
  11884.  
  11885.  
  11886.  
  11887.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11888.  
  11889.  
  11890.                 BEGIN;
  11891.                   This_Char_Done:=TRUE;   {preset}
  11892.                   CASE State OF
  11893.                   0:IF Ch_Code = Eot THEN State:=1;  {eot received}
  11894.                   1:IF Ch_Code = Dc_Addr_1 THEN   {first byte of address}
  11895.                       State:=2                    {wait for second byte}  
  11896.                     ELSE
  11897.                        State:=0;                  {reset state machine} 
  11898.                   2:IF Ch_Code = Dc_Addr_2 THEN   {second byte of address} 
  11899.                       State:=3                    {wait for cntrl char}    
  11900.                     ELSE State:=0;                {reset state machine}    
  11901.                   3:IF Ch_Code = Pol THEN State:=4 ELSE {poll string}      
  11902.                     IF Ch_Code = Sel THEN State:=7 ELSE {select string}    
  11903.                     IF Ch_Code = Fsl THEN State:=15 ELSE {fast sel}
  11904.                       State:=0;       {otherwise reset state machine}          
  11905.                   4:IF Ch_Code = Enq THEN   {end of string}
  11906.                       BEGIN;
  11907.                         This_Char_Done:=FALSE;  {dont read next char}  
  11908.                         State:=5                {next is state = 5}
  11909.                       END
  11910.                     ELSE
  11911.                       State:=0;                 {reset state machine}      
  11912.                   5:IF Tx_Buffer[Tx_Buff_Rptr].Len = 0 THEN
  11913.                       BEGIN;                    {no data to send}
  11914.                         Send_Char(Eot,Ok);      {send eot}
  11915.                         State:=0;       {..and reset state machine}
  11916.                       END
  11917.                     ELSE               {there is data to be sent}
  11918.                       BEGIN;           {send it with header and bcc}       
  11919.                         Send_Buffer(Tx_Buffer[Tx_Buff_Rptr].Data,
  11920.                                     1,Tx_Buffer[Tx_Buff_Rptr].Len,Head_Bcc,
  11921.                                     Dc_Msg_Header,Ok);
  11922.                        IF Ok THEN     {successfully sent}
  11923.                          State:=6     {wait for ack}
  11924.                        ELSE
  11925.                          State:=0;    {otherwise reset state machine}     
  11926.                       END;
  11927.                   6:BEGIN;
  11928.                       IF Ch_Code = Ack THEN  {ack received}
  11929.                         BEGIN;
  11930.                           Send_Char(Eot,Ok); {send eot}
  11931.                           IF Ok THEN         {successfully sent}
  11932.                             BEGIN;    {clear buffer & increase pointer}
  11933.                               Tx_Buffer[Tx_Buff_Rptr].Len:=0;
  11934.                               Tx_Buff_Rptr:=SUCC(Tx_Buff_Rptr) MOD
  11935.                               Tx_Buffers;
  11936.                              END;
  11937.                           State:=0;      {reset state machine}
  11938.                         END
  11939.  
  11940.           Chapter IV, SCL Data Communication example programs          page 181          Chapter IV, SCL Data Communication example programs          page 181
  11941.  
  11942.  
  11943.  
  11944.  
  11945.  
  11946.  
  11947.  
  11948.  
  11949.  
  11950.  
  11951.  
  11952.  
  11953.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  11954.  
  11955.                       ELSE
  11956.                       IF Ch_Code = Nak THEN {mainframe didnt receive ok}   
  11957.                         BEGIN;              {resend data}
  11958.                           This_Char_Done:=FALSE;
  11959.                           State:=5;
  11960.                         END
  11961.                       ELSE                  {mainframe did not respond}
  11962.                         State:=0;           {reset state machine}
  11963.                     END;
  11964.                   7: IF Ch_Code = Enq THEN  {end of sel string}
  11965.                        BEGIN;
  11966.                          This_Char_Done:=FALSE; {dont  receive next char}      
  11967.                          State:=8;              {answer}
  11968.                        END
  11969.                      ELSE
  11970.                        State:=0;                {reset state machine}       
  11971.                   8: IF Rx_Buffer[Rx_Buff_Wptr].Len > 0 THEN
  11972.                       BEGIN;         {we have no rx buffer available}      
  11973.                         Send_Char(Nak,Ok);     {send nak}
  11974.                         State:=0;              {reset state machine}       
  11975.                       END
  11976.                     ELSE        {we can receive data}
  11977.                       BEGIN;
  11978.                         Send_Char(Ack,Ok);  {send ack}
  11979.                         IF Ok THEN State:=9 ELSE   {ack could be sent}     
  11980.                           State:=0;  {otherwise reset state machine}           
  11981.                     END;
  11982.                  9: IF Ch_Code = Soh THEN
  11983.                       State:=10      {SOH received}
  11984.                     ELSE State:=0;
  11985.                 10: IF Ch_Code = Dc_Addr_1 THEN  {first byte of address}   
  11986.                       State:=11
  11987.                     ELSE State:=0;
  11988.                 11: IF Ch_Code = Dc_Addr_2 THEN
  11989.                       State:=12  {second byte of address received}
  11990.                     ELSE State:=0;
  11991.                 12: BEGIN;
  11992.                       IF Ch_Code = Stx THEN    {stx received}
  11993.                         BEGIN;
  11994.                           Bcc:=Stx XOr Head_Bcc; {start bcc calculation} 
  11995.                           Char_Ind:=1;       {init rx buffer}
  11996.                           State:=13;         {rx data}
  11997.                         END
  11998.                       ELSE
  11999.                         State:=0;            {reset state machine}
  12000.                     END;
  12001.              
  12002.  
  12003.  
  12004.  
  12005.  
  12006.           Chapter IV, SCL Data Communication example programs          page 182          Chapter IV, SCL Data Communication example programs          page 182
  12007.  
  12008.  
  12009.  
  12010.  
  12011.  
  12012.  
  12013.  
  12014.  
  12015.  
  12016.  
  12017.  
  12018.  
  12019.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12020.  
  12021.  
  12022.                 13: BEGIN;    {receive data & write into rx buffer}
  12023.                       IF (Char_Ind < Dc_Buffer_Size) AND (Ch_Code <> Etx) THEN 
  12024.                         BEGIN; {buffer not full and not etx received}  
  12025.                           Rx_Buffer[Rx_Buff_Wptr].Data[Char_Ind]:=Ch_Code; 
  12026.                           Bcc:=Bcc XOr Ch_Code; {bcc calculation}
  12027.                           Char_Ind:=SUCC(Char_Ind); {increase buffer index} 
  12028.                         END
  12029.                       ELSE
  12030.                       IF Ch_Code = Etx THEN  {etx received}
  12031.                         BEGIN;
  12032.                           Bcc:=Bcc XOr Etx;  {get final bcc}
  12033.                           Rx_Buffer[Rx_Buff_Wptr].Len:=Char_Ind - 1;       
  12034.                           State:=14;
  12035.                         END
  12036.                       ELSE          {rx buffer overflow}
  12037.                         BEGIN;
  12038.                           State:=0; {reset state machine}
  12039.                           Rx_Buffer_Overflow:=TRUE; {set flag}
  12040.                         END;
  12041.                     END;
  12042.                 14: BEGIN;
  12043.                       IF Ch_Code = Bcc THEN  {received = calculated bcc} 
  12044.                         BEGIN;
  12045.                           Send_Char(Ack,Ok); {send an ACK}
  12046.                           IF Ok THEN {successfully sent, next rx buffer} 
  12047.                             Rx_Buff_Wptr:=SUCC(Rx_Buff_Wptr) MOD Rx_Buffers  
  12048.                           ELSE
  12049.                             Rx_Buffer[Rx_Buff_Wptr].Len:=0;{forget rx  data}   
  12050.                         END
  12051.                       ELSE                    {bcc error}
  12052.                         BEGIN;
  12053.                           Rx_Buffer[Rx_Buff_Wptr].Len:=0;{forget rx data}
  12054.                           Send_Char(Nak,Ok); {send nak}
  12055.                         END;
  12056.                       State:=0;     {reset state machine}
  12057.                     END;
  12058.                 15: IF Ch_Code = Soh THEN State:=16 ELSE State:=0; {FSL}   
  12059.                 16: IF Ch_Code = Dc_Addr_1 THEN State:=17 ELSE State:=0; 
  12060.                 17: IF Ch_Code = Dc_Addr_2 THEN State:=18 ELSE State:=0;
  12061.              
  12062.  
  12063.  
  12064.  
  12065.  
  12066.  
  12067.  
  12068.  
  12069.  
  12070.  
  12071.  
  12072.           Chapter IV, SCL Data Communication example programs          page 183          Chapter IV, SCL Data Communication example programs          page 183
  12073.  
  12074.  
  12075.  
  12076.  
  12077.  
  12078.  
  12079.  
  12080.  
  12081.  
  12082.  
  12083.  
  12084.  
  12085.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12086.  
  12087.  
  12088.                 18: BEGIN;
  12089.                       IF Ch_Code = Stx THEN  {stx received}
  12090.                         BEGIN;
  12091.                           IF Rx_Buffer[Rx_Buff_Wptr].Len > 0 THEN
  12092.                             State:=0    {no rx buffer available}
  12093.                           ELSE
  12094.                             BEGIN;      {start bcc calculation}
  12095.                               Bcc:=Stx XOr Head_Bcc;
  12096.                               Char_Ind:=1; {init buff index}
  12097.                               State:=13;   {wait for rx data}
  12098.                             END;
  12099.                         END
  12100.                       ELSE
  12101.                         State:=0;      {reset state machine}
  12102.                     END;
  12103.                  ELSE State:=0;  {reset state machine}
  12104.                 END; {end case}
  12105.                 IF Ch_Code = Eot THEN State:=1; {preset state machine}    
  12106.               END;
  12107.             END;
  12108.  
  12109.           PROCEDURE Clear_Rx_Buffers;  {clear all rx buffers}
  12110.           VAR X:INTEGER;
  12111.           BEGIN;
  12112.             FOR X:=0 TO Rx_Buffers DO
  12113.               Rx_Buffer[X].Len:=0;    {set length to 0}
  12114.             Rx_Buff_Wptr:=0;          {both pointers to 0}
  12115.             Rx_Buff_Rptr:=0;
  12116.           END;
  12117.  
  12118.           PROCEDURE Clear_Tx_Buffers; {clear all xmit buffers}
  12119.           VAR X:INTEGER;
  12120.           BEGIN;
  12121.             FOR X:=0 TO Tx_Buffers DO
  12122.               Tx_Buffer[X].Len:=0;   {set length to 0}
  12123.             Tx_Buff_Wptr:=0;         {set both pointers to 0}
  12124.             Tx_Buff_Rptr:=0;
  12125.           END;
  12126.  
  12127.  
  12128.  
  12129.  
  12130.  
  12131.  
  12132.  
  12133.  
  12134.  
  12135.  
  12136.  
  12137.  
  12138.           Chapter IV, SCL Data Communication example programs          page 184          Chapter IV, SCL Data Communication example programs          page 184
  12139.  
  12140.  
  12141.  
  12142.  
  12143.  
  12144.  
  12145.  
  12146.  
  12147.  
  12148.  
  12149.  
  12150.  
  12151.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12152.  
  12153.  
  12154.           PROCEDURE Init_Ps;         {init poll select system}
  12155.           VAR
  12156.             Stat:INTEGER;
  12157.           BEGIN;
  12158.             Rx_Buffer_Overflow:=FALSE;
  12159.             Cont_String:=CHR(Dc_Addr_1) + CHR(Dc_Addr_2)
  12160.                         + CHR(Pol) + CHR(Enq);  {set up contention string}
  12161.             Dc_Msg_Header:=CHR(Soh)+CHR(Dc_Addr_1)+CHR(Dc_Addr_2); {header}
  12162.             Head_Bcc:=Dc_Addr_1 XOr Dc_Addr_2;  {calculate bcc for header}
  12163.             State:=0;             {reset state machine}
  12164.             Clear_Rx_Buffers;     {clear rx buffers}
  12165.             Clear_Tx_Buffers;     {clear tx buffers}
  12166.             This_Char_Done:=TRUE;
  12167.             Open_Dc(Stat);        {open datacom & install ISR}
  12168.             Send_String(Cont_String,Result_Ok); {send contention string}
  12169.           END;
  12170.  
  12171.           FUNCTION Data_Received:BOOLEAN;  {returns  true  if  at  least  one }
  12172.           BEGIN;         {of the rx buffers contains data}
  12173.             Data_Received:= Rx_Buffer[Rx_Buff_Rptr].Len > 0;
  12174.           END;
  12175.  
  12176.           FUNCTION Dc_Write_Ok:BOOLEAN;  {returns true if at least one}
  12177.           BEGIN;            {of the tx buffers is available}
  12178.             Dc_Write_Ok:=Tx_Buffer[Tx_Buff_Wptr].Len = 0;
  12179.           END;
  12180.  
  12181.  
  12182.           PROCEDURE  Read_Dc(VAR Data;VAR Len:INTEGER;VAR Ok:BOOLEAN);
  12183.           BEGIN;   {call this routine to obtain data received from Mainframe}  
  12184.            IF Data_Received THEN {one of the rx buffers contains data}
  12185.               BEGIN;              {return it}
  12186.                 Len:=Rx_Buffer[Rx_Buff_Rptr].Len;
  12187.                 Move(Rx_Buffer[Rx_Buff_Rptr].Data,Data,Len);
  12188.                 Rx_Buffer[Rx_Buff_Rptr].Len:=0; {clear this buffer}
  12189.                 Rx_Buff_Rptr:=SUCC(Rx_Buff_Rptr) MOD Rx_Buffers; {incr pointer}
  12190.                 Ok:=TRUE;
  12191.               END
  12192.             ELSE
  12193.               Ok:=FALSE;       {no rx data available}
  12194.           END;
  12195.  
  12196.  
  12197.  
  12198.  
  12199.  
  12200.  
  12201.  
  12202.  
  12203.  
  12204.           Chapter IV, SCL Data Communication example programs          page 185          Chapter IV, SCL Data Communication example programs          page 185
  12205.  
  12206.  
  12207.  
  12208.  
  12209.  
  12210.  
  12211.  
  12212.  
  12213.  
  12214.  
  12215.  
  12216.  
  12217.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12218.  
  12219.  
  12220.           PROCEDURE  Write_Dc(VAR Buff; Len:INTEGER;VAR Ok:BOOLEAN); 
  12221.           BEGIN;  {call this routine to send data to mainframe}
  12222.             IF Dc_Write_Ok THEN  {tx buffer available}
  12223.               BEGIN;
  12224.                 Move(Buff,Tx_Buffer[Tx_Buff_Wptr].Data,SIZEOF(Buff));
  12225.                 Tx_Buffer[Tx_Buff_Wptr].Len:=Len;
  12226.                 Tx_Buff_Wptr:=SUCC(Tx_Buff_Wptr) MOD Tx_Buffers;
  12227.                 Ok:=TRUE;
  12228.               END
  12229.             ELSE
  12230.               Ok:=FALSE;        {no tx buffer available}
  12231.           END;
  12232.  
  12233.  
  12234.  
  12235.  
  12236.  
  12237.  
  12238.  
  12239.  
  12240.  
  12241.  
  12242.  
  12243.  
  12244.  
  12245.  
  12246.  
  12247.  
  12248.  
  12249.  
  12250.  
  12251.  
  12252.  
  12253.  
  12254.  
  12255.  
  12256.  
  12257.  
  12258.  
  12259.  
  12260.  
  12261.  
  12262.  
  12263.  
  12264.  
  12265.  
  12266.  
  12267.  
  12268.  
  12269.  
  12270.           Chapter IV, SCL Data Communication example programs          page 186          Chapter IV, SCL Data Communication example programs          page 186
  12271.  
  12272.  
  12273.  
  12274.  
  12275.  
  12276.  
  12277.  
  12278.  
  12279.  
  12280.  
  12281.  
  12282.  
  12283.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12284.  
  12285.  
  12286.                                Description of SAMPLE8.PAS                               Description of SAMPLE8.PAS
  12287.  
  12288.           The following is a broad discussion of the  datacom routines  used in
  12289.           example program  8 including  some useful  hints on  how to implement
  12290.           such datacom protocols in a SCL program. 
  12291.  
  12292.  
  12293.           Poll-Select Terminal Protocol Handling System          Poll-Select Terminal Protocol Handling System
  12294.  
  12295.           The main  routines  in  this  system  are  'Write_DC',  'Read_DC' and
  12296.           'PS_Handler'.
  12297.            
  12298.           'Write_DC' does  not actually write to the datacom line (this is done
  12299.           by  the  underlying  SCL   Datacom  system   under  the   control  of
  12300.           'PS_Handler'). It  just places  the message to be sent into the first
  12301.           available transmit buffer. If no empty buffer is available (i.e queue
  12302.           full) an  error code  is returned to the calling procedure within the
  12303.           user program. 
  12304.  
  12305.           'Read_DC' works  in a  similar fashion,  it just  returns the message
  12306.           waiting in  the first  read buffer. If there are no messages pending,
  12307.           an error code is returned. 
  12308.  
  12309.           'PS_Handler'  forms  the  interface  to  the  underlying  SCL Datacom
  12310.           system.     It  runs   as  a   background  job  (called  from  within
  12311.           'HP_Background_Task').  'PS_Handler'  checks  all   incoming  datacom
  12312.           traffic for messages addressed to this terminal and acts upon them as
  12313.           required.
  12314.           It mimics a typical 'State Machine' in form  of a  big case statement
  12315.           and is controlled by the variable 'State'.
  12316.           Whenever  the  mainframe  polls  the  terminal,  'PS_Handler'  checks
  12317.           whether there is a message in the write buffer. If there is  none, it
  12318.           sends  an  'EOT',  otherwise  it  sends the message, preceeded with a
  12319.           header containing the terminal address  and  followed  by  ETX  and a
  12320.           block check character. 
  12321.           If  the  mainframe  prompts  this  message  with an ACK the buffer is
  12322.           discarded and the pointer increased to the next buffer to be sent. 
  12323.           In case the  mainframe  sends  a  message,  'PS_Handler'  removes the
  12324.           header  and  the  control  characters  and  stores  it  in  the first
  12325.           available receive buffer where it then can be fetched by 'Read_DC'. 
  12326.           This way of implementing a datacom  protocol in  a SCL  program takes
  12327.           full advantage of SCL's background processing capabilities and allows
  12328.           a user program to treat complex  datacom transactions  very much like
  12329.           writing and  reading to  an ordinary  file, without  having to bother
  12330.           about any protocol conventions and underlying logic etc.
  12331.  
  12332.           On the following page you find a detailed description of  the flow of
  12333.           data through the different layers of this datacom system.
  12334.  
  12335.  
  12336.           Chapter IV, SCL Data Communication example programs          page 187          Chapter IV, SCL Data Communication example programs          page 187
  12337.  
  12338.  
  12339.  
  12340.  
  12341.  
  12342.  
  12343.  
  12344.  
  12345.  
  12346.  
  12347.  
  12348.  
  12349.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12350.  
  12351.  
  12352.  
  12353.                       Poll Select Handler   Datacom read data flow                      Poll Select Handler   Datacom read data flow                      ____________________________________________
  12354.  
  12355.  
  12356.           1    The RS232 adapter hardware receives the datacom message from the
  12357.                mainframe and, whenever a complete character  has been received,
  12358.                raises a hardware interrupt.
  12359.  
  12360.           2.   This hardware  interrupt invokes SCL's Interrupt Service Routine                                                      Interrupt Service Routine
  12361.                (DC_ISR) which fetches this character  and  places  it  into the
  12362.                circular receive buffer.
  12363.  
  12364.           3.   'PS_Handler',  called  from  within  'HP_Background_Task' checks
  12365.                whether one or more characters have been received since the last
  12366.                time  it  was  executing  and,    if  this  is  the case,  calls
  12367.                'Receive_Char' to read them,  one at  a time,  from the circular
  12368.                receive buffer. 
  12369.                It then  determines the  necessary action depending on the value
  12370.                of 'State'. 
  12371.                In case the character is not  intended for  this terminal  it is
  12372.                discarded, otherwise,  if it  is the last character of a control
  12373.                string,  'PS_Handler'  sends  a  prompt  to  the  mainframe, and
  12374.                finally, if  it belongs  to a  message just being received it is
  12375.                placed into  the  first  available  receive  buffer.    Once all
  12376.                characters of  this message  have been  received and placed into
  12377.                the  receive  buffer,  this  buffer  is  marked  valid  and  now
  12378.                available to be read by 'Read_DC'. 
  12379.  
  12380.           4.   'Read_DC',  called  from  within  the  user  program,  moves the
  12381.                complete message from the receive buffer into the  selected user
  12382.                variable. 
  12383.  
  12384.  
  12385.  
  12386.  
  12387.  
  12388.  
  12389.  
  12390.  
  12391.  
  12392.  
  12393.  
  12394.  
  12395.  
  12396.  
  12397.  
  12398.  
  12399.  
  12400.  
  12401.  
  12402.           Chapter IV, SCL Data Communication example programs          page 188          Chapter IV, SCL Data Communication example programs          page 188
  12403.  
  12404.  
  12405.  
  12406.  
  12407.  
  12408.  
  12409.  
  12410.  
  12411.  
  12412.  
  12413.  
  12414.  
  12415.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12416.  
  12417.  
  12418.                       Poll Select Handler   Datacom write data flow                      Poll Select Handler   Datacom write data flow                      _____________________________________________
  12419.  
  12420.  
  12421.           1.   Called  from  within  the  user  program,  'Write_Dc'  moves the
  12422.                message to be sent to the first available write buffer.
  12423.  
  12424.           2.   If 'PS_Handler' receives a Pollstring it  checks whether  one of
  12425.                the write  buffers contains  data to  be sent and if this is the
  12426.                case, passes  it, together  with a  header, on  to the procedure
  12427.                'Send_Buffer'.
  12428.  
  12429.           3.   Send_Buffer  then  calls  'DC_Write'  to  send  it, character by
  12430.                character, out to the datacom line.
  12431.  
  12432.           4.   'PS_Handler' then waits for  an  'ACK'  from  the  mainframe and
  12433.                subsequently discards the content of the write buffer.
  12434.  
  12435.  
  12436.  
  12437.  
  12438.  
  12439.  
  12440.  
  12441.  
  12442.  
  12443.  
  12444.  
  12445.  
  12446.  
  12447.  
  12448.  
  12449.  
  12450.  
  12451.  
  12452.  
  12453.  
  12454.  
  12455.  
  12456.  
  12457.  
  12458.  
  12459.  
  12460.  
  12461.  
  12462.  
  12463.  
  12464.  
  12465.  
  12466.  
  12467.  
  12468.           Chapter IV, SCL Data Communication example programs          page 189          Chapter IV, SCL Data Communication example programs          page 189
  12469.  
  12470.  
  12471.  
  12472.  
  12473.  
  12474.  
  12475.  
  12476.  
  12477.  
  12478.  
  12479.  
  12480.  
  12481.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12482.  
  12483.            
  12484.  
  12485.  
  12486.  
  12487.  
  12488.  
  12489.  
  12490.  
  12491.  
  12492.  
  12493.  
  12494.  
  12495.  
  12496.  
  12497.  
  12498.  
  12499.  
  12500.  
  12501.  
  12502.  
  12503.                                        Appendix A                                       Appendix A
  12504.  
  12505.  
  12506.  
  12507.                                 Sample Program Discussion                                Sample Program Discussion
  12508.  
  12509.  
  12510.  
  12511.  
  12512.  
  12513.  
  12514.  
  12515.  
  12516.  
  12517.  
  12518.  
  12519.  
  12520.  
  12521.  
  12522.  
  12523.  
  12524.  
  12525.  
  12526.  
  12527.  
  12528.  
  12529.  
  12530.  
  12531.  
  12532.  
  12533.  
  12534.  
  12535.  
  12536.  
  12537.  
  12538.  
  12539.  
  12540.  
  12541.  
  12542.  
  12543.  
  12544.  
  12545.  
  12546.  
  12547.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12548.  
  12549.  
  12550.                                       Introduction                                      Introduction
  12551.  
  12552.           In  this  section  you  be  given  some  insight  of  the programming
  12553.           mechanisms used in the 5 small demo programs  made available  to you.
  12554.           Key SCL programming technic are demonstrated and discussed here. 
  12555.  
  12556.           You will  be able  to make  ample use  of these programs for training
  12557.           purposes, we actually recommend that you study them thoroughly.  
  12558.           Having OASIS installed in  your  system  and  being  already somewhat
  12559.           familiar with  its operation  (It's dead easy, very intuitive indeed)
  12560.           you will then be in a position to  examine the  specifications of the
  12561.           formats used in these sample programs.
  12562.           For each  program, under  the header  'What you  could try:' you will                                                'What you  could try:'
  12563.           find some ideas and recommendations to familiarize yourself  with SCL
  12564.           and to understand the features & constructs used in the program under
  12565.           review.  
  12566.           By following these recommendations, you will soon realize  how simple
  12567.           and  effective  the  use  of  SCL  can  be.  In the mean time you can
  12568.           appreciate the purity of code, the speed and the flexibility provided
  12569.           by OASIS SCL designed programs. 
  12570.  
  12571.  
  12572.           Below is a brief overview of all sample programs described herewith.
  12573.  
  12574.           SAMPLE1          SAMPLE1
  12575.           A very short program including a single format. This program is of no
  12576.           practical  use  and  is   mainly  intended   to  exhibit   the  basic
  12577.           architecture and requirements of any SCL program. 
  12578.  
  12579.           SAMPLE2          SAMPLE2
  12580.           A simple program to print mailing labels on your printer. 
  12581.  
  12582.           SAMPLE3          SAMPLE3
  12583.           A  program  demonstrating  how  the  SCL  format stack works. In this
  12584.           example,    up    to  10  formats  are  displayed  on   the    screen
  12585.           simultaneously, overlapping each other. 
  12586.  
  12587.           SAMPLE4          SAMPLE4
  12588.           An automatic  Disk menu program. Any program can be executed directly
  12589.           from the menu just  by pointing  to it.  It can  also let  you wander
  12590.           across all subdirectories on your disk. 
  12591.  
  12592.           SAMPLE5          SAMPLE5
  12593.           A little  Demo Program  giving an overview on some of the features of
  12594.           SCL. Run it !
  12595.  
  12596.  
  12597.  
  12598.  
  12599.  
  12600.  
  12601.  
  12602.  
  12603.  
  12604.  
  12605.  
  12606.           Appendix A,  sample programs discussion                      page 191          Appendix A,  sample programs discussion                      page 191
  12607.  
  12608.  
  12609.  
  12610.  
  12611.  
  12612.  
  12613.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12614.  
  12615.  
  12616.                              Example 1  (OASIS Easy Fields)                              Example 1  (OASIS Easy Fields)                              ______________________________
  12617.  
  12618.  
  12619.           Due to  its  simplicity,  the  first  example  program  offers little
  12620.           practical use,  but beside  showing the  very basic structure and the
  12621.           minimum requirements of any  SCL program  it is  perfectly suited for
  12622.           your first acquaintance with OASIS. 
  12623.  
  12624.  
  12625.  
  12626.           It consists of the following files:
  12627.  
  12628.  
  12629.           SAMPLE1.SCS : The format file, containing a single format. 
  12630.  
  12631.           SAMPLE1.SCI : The index file to above.
  12632.           SAMPLE1.MSG : Contains all Field Messages.                                     Field Messages
  12633.           SAMPLE1.PAS : The Turbo Pascal source program as listed below. 
  12634.  
  12635.           SAMPLE1.EXE : Compiled version of SAMPLE1.PAS.
  12636.  
  12637.  
  12638.           Below is  a complete  listing of SAMPLE1.PAS. It is meant to give you
  12639.           some basic knowledge about programming with  SCL. As  you can  see it
  12640.           can't be easier. Note how little code is required. 
  12641.  
  12642.  
  12643.           PROGRAM first;
  12644.           {$V-}          {No Length Checks for Strings. Mandatory for SCL} USES
  12645.           SCL;      {Make SCL accessible}
  12646.  
  12647.           PROCEDURE handle_first;   {This  Procedure  handles  format 'first'.}
  12648.           BEGIN;
  12649.             Select_Format('first'); {Load the format from disk}
  12650.             Display_Format(0,0);      {Display it  in the upper left corner}   
  12651.           REPEAT
  12652.               Handle_Format;      {Complete  Loop to  handle format  input}    
  12653.           UNTIL Format_Done;   {Either completed or abort key pressed} END;
  12654.  
  12655.  
  12656.           BEGIN; {of main}
  12657.             Select_Format_File('Sample1');   {initialize SCL and load the} 
  12658.                                              {format file 'Sample1'}      
  12659.             handle_first;             {load,display and handle the format} 
  12660.             Close_Formats;            {terminate SCL }
  12661.           END.  {of main}
  12662.  
  12663.  
  12664.  
  12665.  
  12666.  
  12667.  
  12668.  
  12669.  
  12670.  
  12671.  
  12672.           Appendix A,  sample programs discussion                      page 192          Appendix A,  sample programs discussion                      page 192
  12673.  
  12674.  
  12675.  
  12676.  
  12677.  
  12678.  
  12679.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12680.  
  12681.  
  12682.           Explanations of SAMPLE1.PAS          Explanations of SAMPLE1.PAS
  12683.  
  12684.  
  12685.  
  12686.           Compiler Option '$V-'          Compiler Option '$V-'
  12687.  
  12688.           This  Option  is  required  in  any  SCL  program. More details about
  12689.           compiler options can be found in your 'TURBO PASCAL' manual.  Without
  12690.           this compiler option specified SCL programs  won't compile. 
  12691.  
  12692.  
  12693.            
  12694.           USES Statement          USES Statement
  12695.  
  12696.           "USES SCL;" makes SCL accessible from within this program.
  12697.  
  12698.  
  12699.            
  12700.           Main Program          Main Program
  12701.  
  12702.           The first statement is Select_Format_File('Sample1');. This procedure                                 Select_Format_File('Sample1');
  12703.           initializes SCL and all required  files.  Since  no  file SAMPLE1.ERR
  12704.           exists in  this case, SCL only initializes the error numbers (without
  12705.           the messages).
  12706.           'Select_Format_File' is the first SCL statement to be executed and it
  12707.           appears only once in any program. 
  12708.           Close_Formats;  is  the  last  SCL statement. It`closes all files and          Close_Formats;
  12709.           frees the memory space previously used by SCL. 
  12710.           Between these  two  statements,  the  procedure  which  processes the
  12711.           format in this program, Handle_first, is called.                                  Handle_first
  12712.  
  12713.  
  12714.  
  12715.           Format Handling          Format Handling
  12716.  
  12717.           The procedure  'Handle_First' performs  the complete  handling of our
  12718.           screen format.
  12719.           The first statement, 'Select_Format('first');' loads our format (with                               'Select_Format('first');'
  12720.           the  name  'First')  from  the  format  file into the format stack in
  12721.           memory.
  12722.           'Display_Format(0,0);' then displays it on the screen starting at the
  12723.           upper left corner (Displacement 0,0).
  12724.  
  12725.           Then follows the actual format handling loop:
  12726.  
  12727.  
  12728.           REPEAT
  12729.             Handle_Format;        
  12730.           UNTIL Format_Done;
  12731.  
  12732.  
  12733.  
  12734.  
  12735.  
  12736.  
  12737.  
  12738.           Appendix A,  sample programs discussion                      page 193          Appendix A,  sample programs discussion                      page 193
  12739.  
  12740.  
  12741.  
  12742.  
  12743.  
  12744.  
  12745.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12746.  
  12747.  
  12748.           The same  Loop is  used to  process any format in SCL.  The procedure
  12749.           Handle_Format is exited when any of the following occurs:           Handle_Format
  12750.  
  12751.           * Before a new field on the format is initialized (=entered) 
  12752.           * Before a field is left 
  12753.           * Before the format is left (if it is finished)
  12754.  
  12755.           * and, optionally, depending on the format specifications, if a
  12756.             User Function Key has been pressed.             User Function Key
  12757.  
  12758.  
  12759.           The boolean function  'Format_Done'  returns  FALSE  as  long  as the                                'Format_Done'
  12760.           format has not been finished. 
  12761.           The format  is considered  to be finished if any one of the following
  12762.           conditions occurs: 
  12763.  
  12764.           * All mandatory fields are filled in and either 'Escape' was hit
  12765.             or 'Return' was pressed while being in the last field. 
  12766.  
  12767.           * The 'Abort' key (F10) is pressed.
  12768.  
  12769.           Apart from reading and writing fields  and, the  format handling loop
  12770.           is always the same, independent of the number and type of fields on a
  12771.           format. In fact, the above loop can fulfill  the handling  of any SCL                                                                        any
  12772.           screen format. There is no need to define any logic for Help screens,
  12773.           Display of messages, Input error handling,   field  check and  so on.
  12774.           All  this  is  performed  automatically  by SCL as part of the Format
  12775.           Specifications which can be modified anytime via SFD. 
  12776.  
  12777.           Note:  This program does not provide the facility to read or to write          Note:
  12778.           into fields. This will be covered in the next examples.
  12779.  
  12780.  
  12781.  
  12782.           What you could try :          What you could try :
  12783.  
  12784.            1.  Run the program and see what happens.
  12785.  
  12786.            2.  Load the format into SFD and study its specifications. 
  12787.  
  12788.            3.  Add  a  field  to  the format 'First' and/or re-specify existing
  12789.                fields. 
  12790.  
  12791.            4.  Create your own format and  modify  the  program  to  process it
  12792.                according to your requirements. 
  12793.  
  12794.  
  12795.  
  12796.  
  12797.  
  12798.  
  12799.  
  12800.  
  12801.  
  12802.  
  12803.  
  12804.           Appendix A,  sample programs discussion                      page 194          Appendix A,  sample programs discussion                      page 194
  12805.  
  12806.  
  12807.  
  12808.  
  12809.  
  12810.  
  12811.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12812.  
  12813.  
  12814.                              Example 2  (OASIS Print Labels)                             Example 2  (OASIS Print Labels)                             _______________________________
  12815.  
  12816.  
  12817.           This program  captures address  data from a screen format and uses it
  12818.           to output a specified number of mailing labels  on your  printer. Its
  12819.           basic structure  is exactly the same as in example 1. For this reason
  12820.           only the new features are discussed. 
  12821.           Notice the use of prompt  and  error  message  fields  (called output                                                                         output
  12822.           field in OASIS) at the bottom of your screen.          field
  12823.           The error  messages are held in a file called SAMPLE2.ERR. Failing to
  12824.           provide such  file would  still produce  error numbers.  In this very
  12825.           case  SAMPLE2.ERR  is  just  a  straight  copy of 'SCL.ERR' therefore
  12826.           exclusively contains messages for SCL internal errors handling rather
  12827.           than any user defined ones. 
  12828.           References to other files description can be found in example 1.
  12829.  
  12830.  
  12831.  
  12832.           It consists of the following files:
  12833.  
  12834.  
  12835.           SAMPLE2.SCS : The format file, containing a single format. 
  12836.  
  12837.           SAMPLE2.SCI : The index file to above.
  12838.           SAMPLE2.MSG : Contains all Field Messages.                                     Field Messages
  12839.           SAMPLE2.PAS : The Turbo Pascal source program as listed below. 
  12840.  
  12841.           OAS2LAB.EXE : Compiled version of SAMPLE2.PAS.
  12842.  
  12843.  
  12844.  
  12845.  
  12846.           The format file SAMPLE2.SCS          The format file SAMPLE2.SCS
  12847.  
  12848.           It contains 3 formats:
  12849.  
  12850.           'Address' : The label entry format.
  12851.           'Autohelp': See the AutoHelp Feature and the note below.                               AutoHelp Feature
  12852.           'Forhelp' : Specified as the format to be displayed if F1 is                                                                 F1
  12853.                       pressed in the global specifications of 'Address'. 
  12854.  
  12855.           Note:   In case 'Autohelp' cannot be found, SCL displays the adequate          Note:   
  12856.           error message. Setting the SCL variable 'Autohelp_Set' to false would
  12857.           prevent its display. 
  12858.           For the format 'Address', no Field Help Formats have been specified.                                        Field Help Formats
  12859.  
  12860.  
  12861.  
  12862.  
  12863.  
  12864.  
  12865.  
  12866.  
  12867.  
  12868.  
  12869.  
  12870.           Appendix A,  sample programs discussion                      page 195          Appendix A,  sample programs discussion                      page 195
  12871.  
  12872.  
  12873.  
  12874.  
  12875.  
  12876.  
  12877.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12878.  
  12879.  
  12880.           Explanations of SAMPLE2.PAS          Explanations of SAMPLE2.PAS
  12881.  
  12882.  
  12883.           The following  describes all  new SCL constructs introduced with this
  12884.           program.  You  can  find  the  complete   program  listing   on  your
  12885.           distribution disks. 
  12886.  
  12887.  
  12888.  
  12889.           Beep_Time:=2;          Beep_Time:=2;
  12890.  
  12891.           This statement changes the duration of SCL's 'Beep' sound. By default
  12892.           this value is set to 4. Modifying it as shown above causes the 'Beep'
  12893.           to be shorter.
  12894.           Most of  the other  SCL default values can be modified in exactly the
  12895.           same fashion.
  12896.  
  12897.  
  12898.  
  12899.           REPEAT                   {stay in loop until 'Abort' is pressed}  
  12900.            Get_Data;                {display format and obtain data}
  12901.            IF NOT Format_Aborted THEN   {format contains valid data}
  12902.              Print_Labels;              {then print the desired labels}
  12903.           UNTIL Format_Aborted;         {F10 ('Abort') key was pressed} 
  12904.  
  12905.  
  12906.           'Get_Data' is the familiar format handling  loop, literally identical
  12907.           to the one discussed in example 1.
  12908.           'Format_Aborted' is  a boolean variable, which is TRUE if a format is
  12909.           aborted rather than normally  completed. In  other words,  as long as
  12910.           'Format_Aborted' is  FALSE we  know that  the format was completed in
  12911.           the normal way and therefore contains valid data in agreement  to the
  12912.           format specifications.
  12913.           'Print_Labels'  contains  routines  to  read  out  the content of the
  12914.           format and print the appropriate mailing labels. Obviously,  this can
  12915.           only be  done if  the format  contains valid  data (i.e  has not been
  12916.           aborted). 
  12917.           This  sequence (Display of an empty format,  reading  the information
  12918.           and printing  the desired  quantity of  labels) is repeated until the
  12919.           user terminates by pressing 'Abort'.  
  12920.  
  12921.  
  12922.  
  12923.           Display_Format(X_Max DIV 2,Y_Max DIV 2);          Display_Format(X_Max DIV 2,Y_Max DIV 2);
  12924.  
  12925.           X_Max is a function  returning  the  maximum  horizontal displacement
  12926.           possible for  the current  format. Y_Max returns the maximum vertical
  12927.           displacement.  Hence  'Display_Format(X_Max,Y_Max)'  would  display a
  12928.           format in  the lower  right corner  of the screen. Combined with 'DIV
  12929.           2', the format is consequently displayed in the center of the screen.
  12930.  
  12931.  
  12932.  
  12933.  
  12934.  
  12935.  
  12936.           Appendix A,  sample programs discussion                      page 196          Appendix A,  sample programs discussion                      page 196
  12937.  
  12938.  
  12939.  
  12940.  
  12941.  
  12942.  
  12943.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  12944.  
  12945.  
  12946.           Reading the Format Content          Reading the Format Content
  12947.  
  12948.           The procedure  'Print_Labels'  is  also  tasked  to  read  the format
  12949.           content. Below  you find  a complete  listing of  this procedure. Its
  12950.           relevant contructs are discussed afterwards.
  12951.  
  12952.  
  12953.           PROCEDURE Print_Labels; {prints desired Qty of labels using  the} VAR
  12954.                             {data on format 'Address'}
  12955.             Wrkstr: String80;
  12956.             I     : INTEGER;
  12957.  
  12958.           BEGIN;
  12959.             FOR I:=1 TO Nr(G_Cont(7)) DO     {number of labels}
  12960.               BEGIN;
  12961.                 IF G_Sel(1) THEN Wrkstr:=G_Cont(1) ELSE`  {'Mr'}
  12962.                 IF G_Sel(2) THEN Wrkstr:=G_Cont(2) ELSE   {'Mrs'}
  12963.                 IF G_Sel(3) THEN Wrkstr:=G_Cont(3);       {'Miss'}
  12964.                 WRITELN(lst,wrkstr,' ',g_cont(4));{concatenate  the above}     
  12965.                    {with a space and the content of the 'Name' field}
  12966.                 WRITELN(Lst);              {Blank line}
  12967.                 WRITELN(Lst,G_Cont(5));    {the street}
  12968.                 WRITELN(Lst,Capital(G_Cont(6)));    {the city}
  12969.                 WRITELN(Lst,Charstring('=',LENGTH(G_Cont(6)))); 
  12970.                                 {underline the city with '=' chars}
  12971.                 WRITELN(Lst);
  12972.                 WRITELN(Lst);               {Two blank lines}
  12973.               END;          {for loop}
  12974.           END;    {procedure print_labels}
  12975.  
  12976.  
  12977.  
  12978.           Explanations to the above Procedure          Explanations to the above Procedure
  12979.  
  12980.           As mentioned earlier in this manual,  fields on  formats can  be read
  12981.           from the  very moment a format is handled ('Handle_Format') until the
  12982.           next one is just about to be processed. 
  12983.           In our example this is done at the completion of the format. 
  12984.  
  12985.           'G_Cont(n)' is a function returning the content of field 'n'  in form
  12986.           of a string.
  12987.  
  12988.           'Nr' is another function converting a string into an integer number.
  12989.  
  12990.           Therefore the construct 'Nr(G_Cont(7)' reads the content of
  12991.           field 7,  converts it  and returns  it in  form of an integer number.
  12992.           Please note that there  is no  need to  check whether  field 7 really
  12993.           contains an  Integer number,  since the  relevant checks have already
  12994.           been  performed by SCL in  accordance   with   the  specifications of
  12995.           the format  itself. We can therefore be sure at this  moment that the
  12996.           field contains an integer  in  the predetermined range (1..25 in this
  12997.           case).
  12998.  
  12999.  
  13000.  
  13001.  
  13002.           Appendix A,  sample programs discussion                      page 197          Appendix A,  sample programs discussion                      page 197
  13003.  
  13004.  
  13005.  
  13006.  
  13007.  
  13008.  
  13009.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13010.  
  13011.  
  13012.           'G_Sel(n)' is  a function returning the Selected status of field 'n'.                                                  Selected
  13013.           Fields 1 to 3 are arranged into a Group of constants. This means that                                            Group
  13014.           only  one  field  can  be  selected  at  any time. Since we also have
  13015.           specified this group as Mandatory, we know that  at least  (and only)                                  Mandatory
  13016.           one field  has been selected. In our example, we find out which field
  13017.           this is and move its content ('Mr','Mrs' or 'Miss') to  'Wrkstr'. The
  13018.           content of  field 4  (the name)  is then  added to it, seperated by a
  13019.           blank space, and finally the whole string is printed. 
  13020.  
  13021.           Next, the content of field 5 (Street) is read and printed. 
  13022.  
  13023.           The City (content of field 6)  is  printed  in  capital  letters. The
  13024.           construct  'Capital(G_Cont(6))'  elegantly  performs  this operation.
  13025.           Finally to underline the  city  with  '='  characters,  the construct
  13026.           'Charstring('=',length(g_cont(6)))'   returns   a   string   of   '='
  13027.           characters with a length of  the  information  contained  in  field 6
  13028.           (City).
  13029.  
  13030.  
  13031.  
  13032.           Help system          Help system
  13033.  
  13034.           As previously  mentioned, the format file for this program contains 3
  13035.           formats, two of them being 'Help screens'. As  you probably realized,
  13036.           there is  no logic whatsoever in the program to handle these screens.
  13037.           In order to feature an SCL program with help screens, all you have to
  13038.           do is  to design  them and add their names in the format specs of the
  13039.           format(s) they relate to.  The Autohelp  screen does  not have  to be                                         Autohelp
  13040.           specified at  all. SCL checks whether it exists and if it does, it is
  13041.           automatically displayed after a  predetermined number  of consecutive
  13042.           input errors has occurred.
  13043.           The  name  of  the  'Autohelp'  format  must  be identical to the one
  13044.           specified  as 'Autohelp_Screen' in SCLs Global Declarations (Default:
  13045.           'AutoHelp').
  13046.  
  13047.                        
  13048.           Note:    Help  screens  relative  to  a  Format are specified in that          Note:                                    Format
  13049.           formats Global  Specifications. Help  screens associated  with one or                  Global  Specifications
  13050.           more fields  on a format are specified in the Field specifications of               fields                                   Field specifications
  13051.           the appropriate field(s). 
  13052.  
  13053.  
  13054.  
  13055.           Input Messages          Input Messages
  13056.  
  13057.           In order to  display  explanatory  field  input  messages  in  an SCL
  13058.           program  you  just  have  to  specify  these  messages  in  the Field                                                                          Field
  13059.           Specifications of the appropriate field and  enter the  number of the          Specifications
  13060.           field they  should be  displayed into in the Global Specifications of                                                       Global Specifications
  13061.           the format. Again, there is  no  logic  required  within  the program
  13062.           itself for this feature to be incorporated.
  13063.  
  13064.  
  13065.  
  13066.  
  13067.  
  13068.           Appendix A,  sample programs discussion                      page 198          Appendix A,  sample programs discussion                      page 198
  13069.  
  13070.  
  13071.  
  13072.  
  13073.  
  13074.  
  13075.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13076.  
  13077.  
  13078.           Error Messages          Error Messages
  13079.  
  13080.           System or  user generated error messages are  automatically displayed
  13081.           if the number of the field they should be displayed into is specified
  13082.           in the Global Specifications of the appropriate format.                 Global Specifications
  13083.           In case no error file (<Name>.ERR) exists, only the error number will
  13084.           be shown, otherwise the suitable message is displayed. 
  13085.  
  13086.  
  13087.  
  13088.  
  13089.           What you could try :          What you could try :
  13090.  
  13091.            1.  Run the program and see what it does.
  13092.  
  13093.            2.  Try to enter invalid data and see how the program reacts.
  13094.  
  13095.            3.  Load the format file into  SFD and study the  specifications of 
  13096.                the three formats.
  13097.  
  13098.            4.  Run the   program without the file SAMPLE2.ERR being  available 
  13099.                and see what happens if you make an input error.
  13100.  
  13101.            5.  Change the  parameters  'Error Msg Field'  and/or  'Input   Msg 
  13102.                Field' in  the Global  Specifications of the format 'ADDRESS' to
  13103.                0 (zero) and run the program. See what happens.
  13104.  
  13105.            6.  Try to implement 'Field Help Screens' for 'ADDRESS'. 
  13106.  
  13107.            7.  Allow the program to print up to 50 labels (25 is the   current 
  13108.                maximum).
  13109.  
  13110.            8.  Change some   other  Global SCL  Parameters in   the   program, 
  13111.                recompile and run it.
  13112.  
  13113.            9.  Add a  field for the postal code on 'ADDRESS' and  modify   the 
  13114.                program in such a way that it is printed on the label.
  13115.             
  13116.  
  13117.  
  13118.  
  13119.  
  13120.  
  13121.  
  13122.  
  13123.  
  13124.  
  13125.  
  13126.  
  13127.  
  13128.  
  13129.  
  13130.  
  13131.  
  13132.  
  13133.  
  13134.           Appendix A,  sample programs discussion                      page 199          Appendix A,  sample programs discussion                      page 199
  13135.  
  13136.  
  13137.  
  13138.  
  13139.  
  13140.  
  13141.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13142.  
  13143.              
  13144.                            Example 3  (OASIS Formats Stack)                             Example 3  (OASIS Formats Stack)                             ________________________________
  13145.  
  13146.  
  13147.           This  Program  is  a  demonstration  of  the  ability of SCL to stack
  13148.           formats. A format is  pushed on  the stack  whenever a  new format is
  13149.           loaded while  the previous one is not yet finished. It is popped from
  13150.           the stack, i.e. restored as soon as the format on top of the stack is
  13151.           finished.
  13152.  
  13153.            
  13154.           In simple terms, this program works as follows:
  13155.  
  13156.                Load & Display format 'One'.
  13157.                Start handling format 'One'.
  13158.                Load & Display format 'Two'.
  13159.                Start handling format 'Two'.
  13160.                -- Keep doing the  -- 
  13161.                -     same          -
  13162.                -  with formats     -
  13163.                - 'Three' to 'Nine' - 
  13164.                Load & Display format 'Ten'.
  13165.                Start handling format 'Ten'.
  13166.                Terminate format 'Ten'.
  13167.                Restore format 'Nine'.
  13168.                Continue handling format 'Nine'.
  13169.                Terminate format 'Nine'.
  13170.                -- and so on down --
  13171.                -- to format 'Two'--
  13172.                Restore format 'One'.
  13173.                Continue handling format 'One'.
  13174.                Terminate format 'One'.
  13175.                Terminate program.
  13176.  
  13177.  
  13178.           This means  that while  format ten  is being  loaded, nine unfinished
  13179.           formats are waiting in the stack  to be  continued. This  may sound a
  13180.           lot, but  SCL can  simultaneously hold  far more formats in its stack
  13181.           without any problems. There is no real limit  apart from  the size of
  13182.           your computer memory. 
  13183.           If you  should require  more than  20 unfinished formats on the stack
  13184.           simultaneously,    you  must  then  adjust   the     Global  Constant                                                               Global  Constant
  13185.           'Max_Heap_Screens' in  SCL to  reflect the required maximum number of
  13186.           formats. For guidelines to  calculate the  memory requirements  of an
  13187.           SCL program  please refer  to 'System Resource Considerations' in the
  13188.           reference manual.
  13189.                        
  13190.           Note:    The  above  consideration  only  refers  to  the  number  of          Note:
  13191.           unfinished Formats,  formats that  are finished before another format          unfinished Formats
  13192.           is loaded do not take up any space on the stack. The  Total Number of                                                                Total Number of
  13193.           Formats in a program is only restricted by your disk space capacity.          Formats
  13194.  
  13195.  
  13196.  
  13197.  
  13198.  
  13199.  
  13200.           Appendix A,  sample programs discussion                      page 200          Appendix A,  sample programs discussion                      page 200
  13201.  
  13202.  
  13203.  
  13204.  
  13205.  
  13206.  
  13207.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13208.  
  13209.  
  13210.           Listing of SAMPLE3.PAS          Listing of SAMPLE3.PAS
  13211.  
  13212.           PROGRAM Stackdemo;
  13213.           {$V-}                {Disables LENGTH Checks FOR Strings}
  13214.           USES SCL;            {invoke SCL}
  13215.  
  13216.  
  13217.           PROCEDURE Scl_Defaults;
  13218.           BEGIN;
  13219.             Beep_Time:=20;          {Beep shorter}
  13220.             Auto_Help_Set:=FALSE;   {No autohelp in this program}
  13221.           END;
  13222.  
  13223.           FUNCTION Up:BOOLEAN;
  13224.           BEGIN;
  13225.             Up:=FALSE;
  13226.             IF User_Function THEN   {user function key pressed}
  13227.               BEGIN;
  13228.                 IF (Active_Field = 1) AND       {'Up' field}
  13229.                  (Char_Code = Code_Return) THEN { wants to select field}   
  13230.                   BEGIN;
  13231.                     Up:=TRUE;
  13232.                     Char_Code:=Code_Noop;   { SCL should not do anything}  
  13233.                   END                       { with this input character,}  
  13234.               END;                          { i.e not mark the field as }
  13235.           END;                              { selected}
  13236.  
  13237.  
  13238.           PROCEDURE Do_Format(This_Name:String10;This_X,This_Y:INTEGER); 
  13239.           VAR
  13240.             N,
  13241.             Next_Name:String10;
  13242.             Next_X,
  13243.             Next_Y   :INTEGER;
  13244.  
  13245.           BEGIN;
  13246.             Select_Format(This_Name);          {load it from disk}
  13247.             Display_Format(This_X,This_Y);     {display it }
  13248.             Next_X:=This_X+2;          {increase displacements}
  13249.             Next_Y:=This_Y+1;          {for the next format to be loaded}  
  13250.             REPEAT
  13251.               Handle_Format;                   {handle this format}
  13252.               IF Up THEN                       {user wants to go up}       
  13253.                 BEGIN;
  13254.                   N:=Capital(This_Name);       {capital letters}
  13255.                   IF N =  'ONE'   THEN Next_Name:='Two'   ELSE {Which}     
  13256.                   IF N =  'TWO'   THEN Next_Name:='Three' ELSE {format}    
  13257.                   IF N =  'THREE' THEN Next_Name:='four'  ELSE {is}
  13258.                   IF N =  'FOUR'  THEN Next_Name:='Five'  ELSE {the
  13259.                   IF N =  'FIVE'  THEN Next_Name:='Six'   ELSE {next}      
  13260.                   IF N =  'SIX'   THEN Next_Name:='Seven' ELSE {one} 
  13261.                   IF N =  'SEVEN' THEN Next_Name:='Eight' ELSE { ? } 
  13262.  
  13263.  
  13264.  
  13265.  
  13266.           Appendix A,  sample programs discussion                      page 201          Appendix A,  sample programs discussion                      page 201
  13267.  
  13268.  
  13269.  
  13270.  
  13271.  
  13272.  
  13273.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13274.  
  13275.  
  13276.                   IF N =  'EIGHT' THEN Next_Name:='Nine'  ELSE
  13277.                   IF N =  'NINE'  THEN Next_Name:='Ten';
  13278.                   Do_Format(Next_Name,Next_X,Next_Y);      {Recursive}
  13279.                 END;            {call with new name and displacements}
  13280.              UNTIL Format_Done; {this format is finished.}
  13281.           END; {of Do_Format}
  13282.  
  13283.           BEGIN; {of main}
  13284.             Select_Format_File('Sample3');   {initialize SCL and load}     
  13285.                                              {format file 'Sample2'}    
  13286.             Scl_Defaults;                    {change some SCL defaults}    
  13287.             Do_Format('one',0,0);            {display&handle format 'one'} 
  13288.             Close_Formats;                   {terminate SCL}
  13289.           END.  {of main}
  13290.  
  13291.  
  13292.  
  13293.           Explanations of SAMPLE3.PAS          Explanations of SAMPLE3.PAS
  13294.  
  13295.           The only  new features  in this  sample program  are a User Interrupt                                                                 User Interrupt
  13296.           Procedure and the fact that a new format is called  up while  the old          Procedure
  13297.           one is  not yet  finished. There  is no  need to emphasize how simply
  13298.           this can be achieved using SCL.
  13299.  
  13300.  
  13301.  
  13302.           User Interrupt Procedure           User Interrupt Procedure
  13303.  
  13304.           We mentioned already in the explanations of Sample 1 that  there were
  13305.           four conditions under which the procedure 'Handle_format' was exited.
  13306.           A  User  Interrupt  Procedure  is  a user written routine which takes             User  Interrupt  Procedure
  13307.           control at this point.  To accomplish  this, the  appropriate routine
  13308.           (or a  call to it) must be positioned within the format handling loop
  13309.           as follows:
  13310.  
  13311.  
  13312.           REPEAT
  13313.             Handle_Format;
  13314.             {---User Interrupt Routine----}
  13315.           UNTIL Format_Done; 
  13316.  
  13317.  
  13318.           Hence   the   User   Interrupt   routine   is   always   executed  if                        User   Interrupt   routine
  13319.           'Handle_Format'  has  been  exited,  i.e.  one of the four conditions
  13320.           occurred. 
  13321.           Among those four possible conditions one states that  a User Function                                                                  User Function
  13322.           Key has been pressed.          Key
  13323.           This is  actually the condition our user interrupt procedure is based
  13324.           on in this example. 
  13325.           We want  to interfere  as soon  as the  program user  tries to select
  13326.           field 1  (Up). In  case field 2 (Down) is selected no action is taken
  13327.           and SCL terminates the format. (If no interference occurs in the case
  13328.           of field  1, SCL  also automatically  finishes the format since there
  13329.           are no further fields to be filled in). 
  13330.  
  13331.  
  13332.           Appendix A,  sample programs discussion                      page 202          Appendix A,  sample programs discussion                      page 202
  13333.  
  13334.  
  13335.  
  13336.  
  13337.  
  13338.  
  13339.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13340.  
  13341.  
  13342.           The  test  pertaining  to  the  occurrence  of  the  above  mentioned
  13343.           condition is  performed by the boolean function 'Up'. Up returns TRUE
  13344.           if: 
  13345.  
  13346.  
  13347.                1.   A User Function Key (in this case Return) was pressed
  13348.                and
  13349.                2.   field 1 (the 'Up' field) is currently selected. 
  13350.                and 
  13351.                3.   the current Input character (char_code) is 'Return'.
  13352.  
  13353.  
  13354.           If 'Up' is TRUE, the input character is replaced by  a 'No-Op', which
  13355.           causes SCL  to ignore it later on (SCL will then act as if the Return
  13356.           key was never pressed and consequently wait for User input). 
  13357.           If this does not  happen SCL  would, as  soon as  it regains control,
  13358.           carry on  from where  it left  off and  consequently mark  field 1 as
  13359.           'Selected' before it automatically terminates the format. 
  13360.  
  13361.           If 'Up' returns TRUE, a recursive call to 'Do_Format' is made and the
  13362.           whole process  starts over  again with the next format. If one format
  13363.           is finished, i.e 'Down'  has been  selected or  F10 (Abort)  has been
  13364.           pressed then  SCL automatically restores the previous format from the
  13365.           stack.
  13366.  
  13367.  
  13368.  
  13369.  
  13370.           What you could try:          What you could try:
  13371.  
  13372.            1.  Load the format file into  SCL and study the  specifications of 
  13373.                one   of   the  formats (they are all  identical  except  format
  13374.                'Ten', which does not have any fields). 
  13375.            
  13376.            2.  Remove the statement 'Char_code:=Code_Noop;' from the  function 
  13377.                'Up', recompile and run the program and see what happens.
  13378.  
  13379.            3.  Write your  own program  without  recursion and with only 2 or 3
  13380.                formats (you may use the format file from this example).
  13381.  
  13382.  
  13383.  
  13384.  
  13385.  
  13386.  
  13387.  
  13388.  
  13389.  
  13390.  
  13391.  
  13392.  
  13393.  
  13394.  
  13395.  
  13396.  
  13397.  
  13398.           Appendix A,  sample programs discussion                      page 203          Appendix A,  sample programs discussion                      page 203
  13399.  
  13400.  
  13401.  
  13402.  
  13403.  
  13404.  
  13405.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13406.  
  13407.  
  13408.                          Example 4  (OASIS Automatic Disk Menu)                         Example 4  (OASIS Automatic Disk Menu)                         ______________________________________
  13409.  
  13410.  
  13411.           This example program  is  quite  a  useful  DOS  utility  program. It
  13412.           displays all executable files of the current directory along with all
  13413.           subdirectories and the parent directory (if  applicable) on  a screen
  13414.           format.
  13415.           You can  execute any  program from the current directory or move to a
  13416.           different subdirectory by just pointing to it.
  13417.           When compared to the three  previous  examples,  this  one  is fairly
  13418.           complex and employs a lot more SCL features. 
  13419.           Despite  (and  maybe  especially  because  of) the fact, that SCL has
  13420.           certainly not been designed  to develop  DOS utilities,  this example
  13421.           demonstrates and highlights its tremendous power and flexibility. 
  13422.  
  13423.  
  13424.           The main new features exhibited in this program are:
  13425.  
  13426.  
  13427.                - The 'Execute' and , 'ExecuteDos' routines.
  13428.            
  13429.                - Background processing.
  13430.  
  13431.                - More sophisticated User Interrupt Procedures. 
  13432.  
  13433.  
  13434.  
  13435.  
  13436.  
  13437.           The  relevant  components  of  the  program  will be discussed in the
  13438.           following.
  13439.  
  13440.  
  13441.           The Procedure Menu          The Procedure Menu
  13442.  
  13443.           This program  only uses  one Format  and the  procedure handling this
  13444.           format is  called 'Menu'.  It uses some advanced technics we have not
  13445.           covered yet. 
  13446.           In the  previous  examples  'Display_format'  was  immediately called
  13447.           after  'Select_format'  whereas  here  the  format  is first 'filled'
  13448.           before being displayed. 
  13449.           The  procedures  involved  in   this   task   are  'Init_Dir_Search',
  13450.           'Display_Files' and 'Tell_Result'. 
  13451.           Apart from  this, within  the actual Format handling loop, you find a                                               Format handling loop
  13452.           statement which invokes a User Interrupt  Procedure ('Handle_Key') in                                    User Interrupt  Procedure
  13453.           case a  User Function  Key has  been pressed.  If the format has been                  User Function  Key
  13454.           finished (and was not aborted), the procedure 'Do_Work' is executed. 
  13455.           All the  above mentioned  procedures are  described in  detail on the
  13456.           following pages.
  13457.  
  13458.  
  13459.  
  13460.  
  13461.  
  13462.  
  13463.  
  13464.           Appendix A,  sample programs discussion                      page 204          Appendix A,  sample programs discussion                      page 204
  13465.  
  13466.  
  13467.  
  13468.  
  13469.  
  13470.  
  13471.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13472.  
  13473.  
  13474.           Init_Dir_Search           Init_Dir_Search
  13475.  
  13476.           This procedure  initializes the  parameters for our Directory search.
  13477.           It sets the boolean variable 'First' to TRUE  and the  search mask to
  13478.           '*.*' (all files). 
  13479.                        
  13480.           Note:  'First' is a parameter for the directory search which if TRUE,          Note:
  13481.           causes it to initialize a new search, i.e to find  the first filename
  13482.           matching the  specified mask.  Once the first file has been found, it
  13483.           is set to false and subsequent searches will search for the remaining
  13484.           files.
  13485.  
  13486.  
  13487.  
  13488.           Display_Files          Display_Files
  13489.  
  13490.           The first  part of this procedure is a REPEAT..UNTIL loop which calls
  13491.           'Dir'. If  'Dir'  returns  a  result  of  0  (zero),  meaning  that a
  13492.           filename      matching   the   mask   was  found,    the    procedure
  13493.           'Pick_it_if_we_need_it' is called, which determines whether this file
  13494.           is either  an executable  file or  a directory  entry. If this is the
  13495.           case, the file name  is moved  to the  first available  field and the
  13496.           field count is increased by 1. In order to determine whether the file
  13497.           found should be displayed on the format, we  access the  SCL variable
  13498.           'Dta'  (For  details  about  the  content  of  'Dta'  please refer to
  13499.           'Advanced Programming Technics'in the reference manual). 
  13500.           We exit the REPEAT..UNTIL  loop under  any one  of the  following two
  13501.           conditions:  either  the  format  is  full or there are no more files
  13502.           matching the mask.  In  the  latter  case  we  reinitialize  'Dir' by
  13503.           calling  'Init_Dir_Search'  again  and  we  also  blank the remaining
  13504.           fields on the format. In every case,  we  also  make  a  note  of the
  13505.           highest field on our format containing a filename entry.
  13506.           Now that's where the real tricky part starts:
  13507.           On this  format we  want to  have two active fields at the same time,
  13508.           one being the field containing the  filename to  be executed  and the
  13509.           other one  where the optional parameters can be entered. SCL can only
  13510.           have one active field at a time, therefore we have to cheat somehow.
  13511.           One way  to  achieve  this  is  to  declare  all  the  fields holding
  13512.           filenames (2  to 46)  as 'Output'  fields and manipulate these fields
  13513.           independent from the normal SCL field  processing. This  just leaves,
  13514.           what SCL  concerns, field  49 as  the only cursor accessible field on
  13515.           this format  which  is  consequently  active,  i.e  ready  for input,
  13516.           anytime the format is displayed. 
  13517.           In order to highlight the currently chosen filename field, we use the
  13518.           'selected'  field  attribute.  The   procedure  'Handle_Keys',  which
  13519.           monitors  the  'arrow'  keys,  determines  which  filename  is  to be
  13520.           highlighted next and the  highlighting  itself  is  performed  by the
  13521.           procedure 'New_Field'. 
  13522.  
  13523.  
  13524.  
  13525.  
  13526.  
  13527.  
  13528.  
  13529.  
  13530.           Appendix A,  sample programs discussion                      page 205          Appendix A,  sample programs discussion                      page 205
  13531.  
  13532.  
  13533.  
  13534.  
  13535.  
  13536.  
  13537.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13538.  
  13539.  
  13540.           Handle_Keys          Handle_Keys
  13541.  
  13542.           This  procedure  acts  on  all  User  Function  Keys defined for this                                          User  Function  Keys
  13543.           format.
  13544.           In  case F9 is pressed,  the field holding  the currently highlighted
  13545.           filename is  deselected and  'Display_files' is  called to refill the
  13546.           format. 
  13547.           In case the display  of the  current directory  is not  yet complete,
  13548.           ('first' is FALSE) the remaining entries are searched to be displayed
  13549.           now, otherwise a new search cycle is initiated  to display  the first
  13550.           page of file names.
  13551.  
  13552.           In  case,  one  of  the  'arrows'  or  'Home'  or 'End' is pressed we
  13553.           determine the next field  (file  name)  to  be  highlighted  and call
  13554.           'Next_Field' to do it. 
  13555.  
  13556.           The  next  two  keys  are  only  intercepted for user convenience: If
  13557.           'Escape'  is  pressed,  it  is  replaced   by  'F10'   (Abort)  which
  13558.           subsequently causes the program to be terminated.
  13559.           If 'Return'  is pressed  and the parameter field (49) contains spaces
  13560.           this key is replaced  by  an  'Escape'  character,  which  causes the
  13561.           format to  be terminated  instantly. The  reason for this is that SCL
  13562.           would interpret 'Return' in this case as a command to switch field 49
  13563.           to  'Edit  Mode'  and  we  would have to press 'Return' (or 'Escape')
  13564.           again to finish the format,  therefore  this  manipulation  saves the
  13565.           user an additional keystroke. 
  13566.  
  13567.           With the  exception of  the last  two cases we want SCL to ignore any
  13568.           other key depression by substituting 'No_Op'. 
  13569.  
  13570.  
  13571.  
  13572.           New_Field          New_Field
  13573.  
  13574.           This procedure is called with  two  parameters,  the  field currently
  13575.           highlighted (due  to be  deselected) and the new field (the one about
  13576.           to be selected, i.e highlighted). 
  13577.           This task is performed by the first two statements. 
  13578.           Once this is done, 'current field'  matches the  new field  now being
  13579.           highlighted. 
  13580.           In  the  same  time  frame  three  more fields need to be updated but
  13581.           instead of being processed here it  is treated  as a  background task
  13582.           because another  'Arrow' key  could also  already be pressed. In this
  13583.           case priority is given to handle this key first before  attempting to
  13584.           update any one of the three fields. 
  13585.           By making  this task  a background job we ensure that it is only done
  13586.           when spare time is available, without  delaying any  pending keyboard
  13587.           input.
  13588.           In order  to notify  the Background processing procedure that updates                                   Background processing procedure
  13589.           are to be carried out ,  three boolean  flags are  set, one  for each
  13590.           field to be revised.
  13591.            
  13592.  
  13593.  
  13594.  
  13595.  
  13596.           Appendix A,  sample programs discussion                      page 206          Appendix A,  sample programs discussion                      page 206
  13597.  
  13598.  
  13599.  
  13600.  
  13601.  
  13602.  
  13603.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13604.  
  13605.  
  13606.           Do_Work          Do_Work
  13607.  
  13608.           This procedure  first fetches  the file name from the field currently
  13609.           highlighted. In case of a  directory  entry  it  changes  the current
  13610.           directory accordingly. 
  13611.           If we  are dealing  with an executable file instead it first builds a
  13612.           string out of the filename (including  path) and  the parameter entry
  13613.           and then  executes this  file. Depending  on whether  it is an '.EXE'
  13614.           file or not, 'Execute' or 'ExecuteDos' is used. 
  13615.           The reason for this is that all '.BAT' and some  of the  '.COM' files
  13616.           (mainly some external DOS commands) require COMMAND.COM to be present
  13617.           while '.EXE' files can be started directly.  
  13618.           On  return    from  the  previously  executed  program,  a  check for
  13619.           successful execution  is done  and if  this is the case a prompt asks
  13620.           the user to press 'Return' to go back to the menu program (The reason
  13621.           for  not  going  directly  back  is  to give him a chance to read the
  13622.           screen content). 
  13623.           In case of problems during execution we directly go back  to the menu
  13624.           program and 'Tell_Result' displays an appropriate error message. 
  13625.  
  13626.  
  13627.  
  13628.           Tell_Result          Tell_Result
  13629.  
  13630.           This procedure simply checks whether 'Execute' or 'ExecuteDos' caused
  13631.           a result code indicating an error. 
  13632.           If an  error occurred  the relevant  (user defined)  error message is
  13633.           displayed in field 50 and a 'beep' is initiated. 
  13634.                        
  13635.           Note:   More information  on user defined error messages can be found          Note:
  13636.           under 'Advanced Programming Technics'in this appendix. 
  13637.  
  13638.  
  13639.  
  13640.           LP_Background_Task          LP_Background_Task
  13641.  
  13642.           This  is    assigned    as  a  SCL    background    Task    via   the
  13643.           'LP_Background_Pointer:=@LP_Background_Task;'  statement  in the main
  13644.           body of the program.
  13645.           It is called by the SCL  procedure 'Handle_Format'  whenever there is
  13646.           no keyboard  input pending  and no  other work needs to be done. This
  13647.           procedure is  used  here  to  update  fields  46,47  and  49  after a
  13648.           different filename  has been selected by the user. It is based on the
  13649.           simple principle that whenever the  procedure  is  entered  all three
  13650.           flags set by 'Next_Field' are checked. 
  13651.           If  one  of  these  flags  is  found  to be TRUE the pertinent update
  13652.           procedure is performed and the flag is then set to  FALSE. The update
  13653.           procedures themselves  are clear and easy to understand and therefore
  13654.           not separately described here.
  13655.  
  13656.  
  13657.  
  13658.  
  13659.  
  13660.  
  13661.  
  13662.           Appendix A,  sample programs discussion                      page 207          Appendix A,  sample programs discussion                      page 207
  13663.  
  13664.  
  13665.  
  13666.  
  13667.  
  13668.  
  13669.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13670.  
  13671.  
  13672.                                Example 5  (OASIS SCL Demo)                               Example 5  (OASIS SCL Demo)                               ___________________________
  13673.  
  13674.  
  13675.  
  13676.           This program  is  a  little  demo  giving  an  overview  on  some SCL
  13677.           features. Although 14 different screen formats are handled it remains
  13678.           a rather simple program.
  13679.           It consists of a main menu proposing a selection of 8 different demos
  13680.           plus the possibility to terminate the program. 
  13681.           In  order  to  demonstrate  background  processing it also features a
  13682.           display of time and date on each format.
  13683.           The  following  is a detailed explanation of its  various procedures.
  13684.  
  13685.  
  13686.  
  13687.  
  13688.                        
  13689.           Menu          Menu
  13690.            
  13691.           The  Menu  procedure  is  very  straightforward.  The  menu format is
  13692.           processed using the very  same  basic  Format  Handling  Loop already                                                 Format  Handling  Loop
  13693.           described in  example 1.  Once the format is finished, upon detection
  13694.           of the selected field the corresponding demo procedure  is called up.
  13695.           In the  case field  13 being selected, the boolean variable 'Progend'
  13696.           becomes TRUE which then causes the program to  exit the REPEAT..UNTIL
  13697.           loop  and  subsequently  terminates  the demo program. The reason for
  13698.           using this boolean variable rather than 'UNTIL G_Sel(13)' is simple:
  13699.           Just imagine you would  come from  a demo  format where  field 13 was
  13700.           selected.  Since  R_Ptr  would  still  point  to  this  demo  format,                            R_Ptr
  13701.           'G_Sel(13)' would access field 13 on this format  rather than  on our
  13702.           menu. We must therefore make sure that we pass 'Handle_Format' (which
  13703.           adjusts R_Ptr to the menu again) before any attempt to  read a field.
  13704.           This  is  realized  by  simply  including the 'G_Sel' into our 'case'
  13705.           statement.
  13706.  
  13707.            
  13708.           Five out of the eight different demos are  performed by  just calling
  13709.           the procedure 'Do_Format' with the appropriate format name while  the
  13710.           other three demos required some additional programming.
  13711.           'Do_Format' is a simple procedure which selects a format, displays it
  13712.           and then handles it. 
  13713.           In  order  to  be  able  to  blank the format when completed the User
  13714.           Interrupt Procedure monitoring 'End_Of_Format' is employed. The other
  13715.           three  demos  are  a  bit  more  complicated  and  will  therefore be
  13716.           discussed in detail.
  13717.  
  13718.  
  13719.  
  13720.  
  13721.  
  13722.  
  13723.  
  13724.  
  13725.  
  13726.  
  13727.  
  13728.           Appendix A,  sample programs discussion                      page 208          Appendix A,  sample programs discussion                      page 208
  13729.  
  13730.  
  13731.  
  13732.  
  13733.  
  13734.  
  13735.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13736.  
  13737.  
  13738.                                       Country Demo                                      Country Demo
  13739.  
  13740.           Country demo demonstrates  SCL's  capability  to  work  with  the DOS
  13741.           country information. 
  13742.           When compared  with 'Do_Format',  the main  procedure of country demo
  13743.           offers two additional features. 
  13744.           The first procedure was added to set up the fields  before the format
  13745.           was  actually  displayed  on  screen  ('Update_Fields').  The  second
  13746.           procedure acts on 'End_of_field'-User Interrupts.                                                Interrupts
  13747.  
  13748.  
  13749.  
  13750.           Procedure Update_Fields          Procedure Update_Fields
  13751.            
  13752.           This procedure accesses some  of  the  Country  dependent Information
  13753.           provides by  SCL and  writes it  to the  proper fields on the format.
  13754.           Please note  that  the  numeric  (integer)  values  are  converted to
  13755.           strings using the 'St' function. 
  13756.  
  13757.  
  13758.  
  13759.           Procedure Handle_End_of_Field          Procedure Handle_End_of_Field
  13760.  
  13761.           This procedure  is the  actual heart of 'Country demo'. Below you can
  13762.           examine  its  listing.   All   programming   details   are  discussed
  13763.           afterwards.
  13764.  
  13765.  
  13766.  
  13767.           PROCEDURE Handle_End_Of_Field; {user interrupt procedure}
  13768.           BEGIN;
  13769.             IF Active_Field = 4 THEN     {new country code entered}
  13770.               BEGIN;
  13771.                 IF G_Cont(4) > ' ' THEN  {not blank}
  13772.                   BEGIN;
  13773.                     Scl_Country:=Nr(G_Cont(4)); {move it to SCL_Country}   
  13774.                     Get_Country;                {get country information}  
  13775.                     IF (Country <> Scl_Country) AND (Scl_Country > 0) THEN 
  13776.                       BEGIN;            {invalid country code was entered} 
  13777.                         Glb_Error:=24;  {error number to SCL}
  13778.                         Scl_Country:=Nr(G_Cont(5)); {restore old country}  
  13779.                         Get_Country;                {get country info}     
  13780.                       END
  13781.                     ELSE                {country code was valid}
  13782.                       Update_Fields;    {display new country info}
  13783.                   END;
  13784.               END;
  13785.           END;
  13786.  
  13787.            
  13788.  
  13789.  
  13790.  
  13791.  
  13792.  
  13793.  
  13794.           Appendix A,  sample programs discussion                      page 209          Appendix A,  sample programs discussion                      page 209
  13795.  
  13796.  
  13797.  
  13798.  
  13799.  
  13800.  
  13801.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13802.  
  13803.  
  13804.           The first  two 'IF' statements ensure that we are in field 4 and that
  13805.           this field contains data. 
  13806.           If this is the case,  the  content  will  be  read,  converted  to an
  13807.           integer and placed into 'SCL_Country'.
  13808.           We then  call the  SCL procedure  Get_Country' which accesses the DOS
  13809.           country  information  and   updates   the   relevant   SCL  variables
  13810.           accordingly. 
  13811.  
  13812.           'Get_Country' acts as follows:
  13813.           If  'SCL_Country'  contains  0  (the  default  value)  it borrows the
  13814.           country  information  according  to  the  setting  of  your  computer
  13815.           (Country=xxx  statement  in  CONFIG.SYS). If SCL_Country contains any
  13816.           other value (a Country-code)  then SCL  is set  up according  to this
  13817.           code.
  13818.           Once 'Get_Country' has been called, a check for country code validity
  13819.           is performed.
  13820.           It is valid when either the value returned  in 'Country'  is equal to
  13821.           'SCL_Country' or if 0 was specified for 'SCL_Country'.
  13822.           In case  of invalid country code, the one previously used is restored
  13823.           from  field 5 (we wrote it to this   field   in 'Update_Fields'), and
  13824.           'Get_Country' is called again with this latter value in 'SCL_Country'
  13825.           to restore the variables in SCL back to valid information.
  13826.           In addition, 'Glb_Err' is  set  to  an  error  number  pointing  to a
  13827.           message  in  SAMPLE5.ERR  stating  that  an  invalid country code was
  13828.           entered. 
  13829.           Since    'Glb_Err'  returns    a  value  different   from  0  (zero),
  13830.           'Handle_Format' will enter its input error routine, beep, display the
  13831.           error message and also  refuse the  attempt to  leave field  number 4
  13832.           until a valid country code is keyed in.
  13833.           In case  of a valid code 'Update_Fields' is called once more to write
  13834.           the new information into the corresponding fields.
  13835.  
  13836.                        
  13837.           Note:  Further details  about user  generated error  messages and the          Note:
  13838.           use of 'Glb_Err' can be found in this appendix.
  13839.  
  13840.  
  13841.  
  13842.  
  13843.  
  13844.  
  13845.  
  13846.  
  13847.  
  13848.  
  13849.  
  13850.  
  13851.  
  13852.  
  13853.  
  13854.  
  13855.  
  13856.  
  13857.  
  13858.  
  13859.  
  13860.           Appendix A,  sample programs discussion                      page 210          Appendix A,  sample programs discussion                      page 210
  13861.  
  13862.  
  13863.  
  13864.  
  13865.  
  13866.  
  13867.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13868.  
  13869.  
  13870.                                         Date Demo                                        Date Demo
  13871.  
  13872.           Date Demo  demonstrates most  of the  date/time routines in SCLn With
  13873.           the exception that the field  update  procedure  is  called 'Prefill'
  13874.           here,  the  main  procedure  of  'Date_Demo'  is identical to the one
  13875.           described in 'Country_Demo'. 
  13876.           However both  'Prefill'  and the  user Interrupt  Procedure contain a                                            user Interrupt  Procedure
  13877.           great  number  of  new  constructs  which  will  be  discussed in the
  13878.           following pages.
  13879.  
  13880.  
  13881.  
  13882.           Prefill          Prefill
  13883.  
  13884.           This procedure fills some fields with information about  todays date.
  13885.           First, the  SCL routine  'Get_Date' is called to retrieve todays date
  13886.           as integer values. 
  13887.           Then the 'day of week' value is converted to the actual name which is
  13888.           effectively written to field 4. 
  13889.           The date  is then  converted into  a julian  date. Since the function
  13890.           'St' cannot be used with  REAL  numbers,  'STR'  is  used  instead to
  13891.           convert the  julian date to a string before it finally can be written
  13892.           to field 5.
  13893.  
  13894.  
  13895.  
  13896.           Handle_End_of_Field          Handle_End_of_Field
  13897.  
  13898.           User  Interrupt  Procedure  is  invoked  whenever   a  'End_of_Field'                Interrupt  Procedure
  13899.           condition occurs and also in the case of fields 6 and 15.
  13900.           Field 6  is the  one where  the user  can enter a date.  Upon leaving
  13901.           this field, a check for data entry is performed and  if something has
  13902.           been keyed in the following occurs:
  13903.           The procedure  'Check_Date' checks  the date entered for validity and
  13904.           converts it to three integers for year, month and day.  (Please note,
  13905.           that  the  date  is  checked  according  to  the  country information
  13906.           currently used. In the  case of  USA (1)  the date  is interpreted as
  13907.           MMDD  whereas  for  most  other  countries  it  is DDMM). If the date
  13908.           entered is invalid, 'SCL_Err' is set to point to a user defined error
  13909.           message  in  SAMPLEu.ERR,  which  causes SCL to display this message,
  13910.           beep and to reject  the attempt  to exit  this field.  In addition to
  13911.           this, fields  7 to  14 are  blanked out.  If   the  date  entered  is
  13912.           found  valid,  the  procedure 'Update_User_Date'  is called  which in
  13913.           turn does some calculations and writes the results to fields 7 to 14.
  13914.  
  13915.           For  field  15  the  process  is  similar,  in  this case the user is
  13916.           supposed  to  enter  a  valid  time   and  if   he  does   so,    'Up
  13917.           date_User_Time' is  called to  analyze the  time entered and to write
  13918.           appropriate information to fields 16 to 19. 
  13919.           If the time entered is  invalid,  a  sequence  identical  to  the one
  13920.           described for  the date  takes place,  the only  difference being the
  13921.           error message. 
  13922.  
  13923.  
  13924.  
  13925.  
  13926.           Appendix A,  sample programs discussion                      page 211          Appendix A,  sample programs discussion                      page 211
  13927.  
  13928.  
  13929.  
  13930.  
  13931.  
  13932.  
  13933.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  13934.  
  13935.  
  13936.           Update_User_Date           Update_User_Date
  13937.  
  13938.           This procedure uses most of the SCL date  related routines.  It first
  13939.           writes the values for day, month and year of the date in field 6 (and
  13940.           decoded by 'Check_Date') to fields  7,  8  and  9.  Then  these three
  13941.           values are  converted into a date string by 'Date_String' and written
  13942.           to field 10.
  13943.           The julian date is calculated, converted to a string using  'STR' (St
  13944.           cannot be  used for  REAL numbers,  only for Integers) and written to
  13945.           field 11.
  13946.           After this, the number of days between today and the  date entered is
  13947.           calculated by  simply subtracting them from each other and converting
  13948.           the result to a positive number. This value is written to field 12. 
  13949.           The procedure 'weekday' is used to  calculate the  'day_of_week'. The
  13950.           result, an Integer number between 0 (sunday) and 6 (saturday) is then
  13951.           converted into the matching day name and written to field 13.
  13952.           100 days are then added to the julian  date, the  result is converted
  13953.           back  into  year,  month  and  day  via  the procedure 'Normal_Date',
  13954.           formatted with the  function  'Date_String'  and  finally  written to
  13955.           field 14. 
  13956.  
  13957.  
  13958.  
  13959.           Update_User_Time          Update_User_Time
  13960.  
  13961.           This rather  simple procedure  converts the integer values for hours,
  13962.           minutes and seconds of the time entered into field 15  to strings and
  13963.           writes them to fields 16, 17 and 18.
  13964.           These values  are then  converted to  a formatted  time string by the
  13965.           function 'Time_String' and written to field 19.
  13966.  
  13967.            
  13968.  
  13969.  
  13970.  
  13971.  
  13972.  
  13973.  
  13974.  
  13975.  
  13976.  
  13977.  
  13978.  
  13979.  
  13980.  
  13981.  
  13982.  
  13983.  
  13984.  
  13985.  
  13986.  
  13987.  
  13988.  
  13989.  
  13990.  
  13991.  
  13992.           Appendix A,  sample programs discussion                      page 212          Appendix A,  sample programs discussion                      page 212
  13993.  
  13994.  
  13995.  
  13996.  
  13997.  
  13998.  
  13999.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14000.  
  14001.  
  14002.                                    Special Fields Demo                                   Special Fields Demo
  14003.  
  14004.  
  14005.           Main procedure          Main procedure
  14006.  
  14007.           This procedure is identical  to  those  used  for  the  'country' and
  14008.           'date' demos with one exception however; it embeds an additional User                                                                           User
  14009.           Interrupt Procedure, which  monitors  the  keyboard  keys.  This User          Interrupt Procedure                                              User
  14010.           Interrupt  Procedure,  'Handle_User_Function'  is  probably  the most          Interrupt  Procedure
  14011.           interesting part of this demo because  it reveals  some useful tricks
  14012.           which you  will find  most helpful  when writing your own application
  14013.           programs. 
  14014.  
  14015.  
  14016.  
  14017.           Handle_User_Function          Handle_User_Function
  14018.  
  14019.           This procedure  deals with  fields that  have the  'Char Check' field
  14020.           attribute set to TRUE. 
  14021.           It is  therefore executed  whenever one of these fields is active and
  14022.           any keyboard key is pressed. Each field will be discussed separately.
  14023.  
  14024.                        
  14025.           Note:  The reason  for using  'Char Check'  here is  quite simple: in          Note:
  14026.           this demo  we have  to take into consideration far more keys than the
  14027.           maximum number that can  be  specified  as  'User  Functions'  on one
  14028.           format (10, plus any of the function keys).
  14029.           In a  real world  program it  would probably be preferable to specify
  14030.           'User  Function  Keys'  because,  beside  the   fact  it   is  faster
  14031.           ('Handle_Format' is  not interrupted for each single key) it also can
  14032.           save you programming work since you would know  that the  key pressed
  14033.           must belong to the specified set. 
  14034.  
  14035.  
  14036.           Field 5
  14037.  
  14038.           If the  input key is a 'Space' the content of the field is changed to
  14039.           something  else.  In  this  example  we  only  use   three  different
  14040.           possibilities  but  in  a  user  program  it  could also be any other
  14041.           number. 
  14042.           This field shows a nice way to make programs more userfriendly which,
  14043.           in many cases can also save an additional menu. 
  14044.  
  14045.  
  14046.           Field 6
  14047.  
  14048.           While this field is active we check if one of a specified set of keys
  14049.           has been pressed, and if this was the case, an  appropriate string is
  14050.           written into  the field. This construction can equally be used in the
  14051.           same manner as the one demonstrated with field 5.
  14052.  
  14053.  
  14054.  
  14055.  
  14056.  
  14057.  
  14058.           Appendix A,  sample programs discussion                      page 213          Appendix A,  sample programs discussion                      page 213
  14059.  
  14060.  
  14061.  
  14062.  
  14063.  
  14064.  
  14065.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14066.  
  14067.  
  14068.           Field 7
  14069.  
  14070.           When active this field displays the  ASCII Code  of each  key pressed
  14071.           with the  exception of 'Return' which moves us to the next field. The
  14072.           SCL internal character  code  notation  is  as  follows:  if  the key
  14073.           creates  a  two  byte  code  (an  ASCII  Code  preceded  by  a  'ESC'
  14074.           character), 1000 is added to it, otherwise the normal ASCII  value is
  14075.           kept. 
  14076.  
  14077.  
  14078.  
  14079.           Field 8
  14080.  
  14081.           The handling  of this field is simple, each input character (if it is
  14082.           not a 'two byte key') is converted to upper case  and then displayed.
  14083.           This can be useful in many application programs as well.
  14084.  
  14085.                        
  14086.           Note:  In all cases, where you don't want SCL to take any action on a          Note:
  14087.           character, simply replace  it  by  'Char_NoOp'.  SCL  will  then just
  14088.           ignore it.
  14089.  
  14090.  
  14091.            
  14092.  
  14093.           Handle_End_of_Field          Handle_End_of_Field
  14094.  
  14095.           This procedure  monitors field 4 and checks whether it is selected or
  14096.           not.
  14097.           If selected it writes 'Yes' to its content, otherwise 'No'is written.
  14098.           Similarly  the  same  method  can  be  used  in  all  cases where the
  14099.           objective is to display the state  of a  field with  text rather than
  14100.           with a display attribute. 
  14101.  
  14102.  
  14103.           Background Processing          Background Processing
  14104.  
  14105.           The capability  to support  background processing  is one of the most
  14106.           powerful features of SCL.
  14107.           In this example program it is used to display the  time and  the date
  14108.           (obviously, you can do a lot more with it).
  14109.           In this  example program  the current  date and time are displayed in
  14110.           two fields on each format and 'LP_Background_Task' is  used to update
  14111.           these fields constantly.
  14112.           'LP_Background_Task' simply  checks whether  the actual time and date
  14113.           is still reflected by the content of the  two fields  and if  this is
  14114.           not the case, updates them. 
  14115.  
  14116.  
  14117.  
  14118.  
  14119.  
  14120.  
  14121.  
  14122.  
  14123.  
  14124.           Appendix A,  sample programs discussion                      page 214          Appendix A,  sample programs discussion                      page 214
  14125.  
  14126.  
  14127.  
  14128.  
  14129.  
  14130.  
  14131.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14132.  
  14133.  
  14134.  
  14135.  
  14136.  
  14137.  
  14138.  
  14139.  
  14140.  
  14141.  
  14142.  
  14143.  
  14144.  
  14145.  
  14146.  
  14147.  
  14148.  
  14149.  
  14150.  
  14151.  
  14152.  
  14153.  
  14154.  
  14155.  
  14156.  
  14157.  
  14158.  
  14159.  
  14160.  
  14161.  
  14162.  
  14163.  
  14164.  
  14165.  
  14166.  
  14167.  
  14168.  
  14169.  
  14170.  
  14171.  
  14172.  
  14173.  
  14174.  
  14175.  
  14176.  
  14177.  
  14178.  
  14179.  
  14180.  
  14181.  
  14182.  
  14183.  
  14184.  
  14185.  
  14186.  
  14187.  
  14188.  
  14189.  
  14190.           Appendix A,  sample programs discussion                      page 215          Appendix A,  sample programs discussion                      page 215
  14191.  
  14192.  
  14193.  
  14194.  
  14195.  
  14196.  
  14197.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14198.  
  14199.  
  14200.  
  14201.  
  14202.  
  14203.  
  14204.  
  14205.  
  14206.  
  14207.  
  14208.  
  14209.  
  14210.  
  14211.  
  14212.  
  14213.  
  14214.  
  14215.  
  14216.  
  14217.  
  14218.  
  14219.                                The Screen Control Language                               The Screen Control Language                       
  14220.                        
  14221.                                           (SCL)                                          (SCL)                       
  14222.                        
  14223.                        
  14224.                                    SCL System Details                                   SCL System Details                                                     
  14225.  
  14226.  
  14227.  
  14228.  
  14229.  
  14230.  
  14231.  
  14232.  
  14233.  
  14234.  
  14235.  
  14236.  
  14237.  
  14238.  
  14239.  
  14240.  
  14241.  
  14242.  
  14243.  
  14244.  
  14245.  
  14246.  
  14247.  
  14248.  
  14249.  
  14250.  
  14251.  
  14252.  
  14253.  
  14254.  
  14255.  
  14256.  
  14257.  
  14258.  
  14259.  
  14260.  
  14261.  
  14262.  
  14263.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14264.  
  14265.  
  14266.                                     Service Routines                                    Service Routines                                                    
  14267.  
  14268.  
  14269.           Interrupt Service  Routines are  routines which  are called to handle
  14270.           events  within  your  computer.  They  are  normally  located  in the
  14271.           computers BIOS  (Basic Input  Output System). A user program can take
  14272.           over the handling of interrupts. This is accomplished  by placing the
  14273.           address of  its own  interrupt routine into the BIOS Interrupt Vector
  14274.           table. 
  14275.           SCL takes control of two interrupts with its own routines:
  14276.  
  14277.  
  14278.  
  14279.           The clock tick interrupt (Interrupt 1CH)           The clock tick interrupt (Interrupt 1CH)
  14280.  
  14281.           This interrupt is called by the BIOS time handling routines (Hardware
  14282.           Clock)  18.2  times  per  second  (about once every 55 milliseconds).
  14283.           Every time Interrupt 1CH is called by the BIOS, control  is passed to
  14284.           the routine  'Clock_ISR' in SCL which then performs the necessary SCL
  14285.           internal  functions  before  control  is  returned   to  BIOS.  These
  14286.           functions are  to control  the duration  of the  'Beep' Sound and the
  14287.           field blinking frequency (see also the description of 'Blink_Count').
  14288.  
  14289.           By  using  an  Interrupt  service  routine  instead  of  a normal SCL
  14290.           procedure to manage these tasks it is ensured that they are performed
  14291.           entirely independantly  of the  logic of your application program and
  14292.           SCL itself. Hence a  lot of  unnecessary overhead  is avoided because
  14293.           instead of  waiting for  an event,  SCL can  perform other functions.
  14294.           Consider the following example of a typical 'Beep' routine: 
  14295.  
  14296.  
  14297.           PROCEDURE Do_Beep;
  14298.           BEGIN;
  14299.             SOUND(500);
  14300.             DELAY(250);
  14301.             NOSOUND;
  14302.           END;
  14303.  
  14304.  
  14305.           If  SCL  was  programmed  like  this,  one  would  have  to  wait 250
  14306.           milliseconds  for  this  routine  to  exit  without  being able to do
  14307.           anything else. This would not only slow down the program considerably
  14308.           but it  would also make background tasks like datacom etc.. virtually
  14309.           impossible. 
  14310.           For this reason, the 'Beep' routine  in  SCL  looks  in  principle as
  14311.           follows: 
  14312.  
  14313.  
  14314.           PROCEDURE Beep;
  14315.           BEGIN;
  14316.             SOUND(Beep_Frequency_1);
  14317.             Beep_Counter:=Beep_Length;
  14318.           END;
  14319.  
  14320.  
  14321.  
  14322.           Appendix A, SCL system details                               page 217          Appendix A, SCL system details                               page 217
  14323.  
  14324.  
  14325.  
  14326.  
  14327.  
  14328.  
  14329.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14330.  
  14331.  
  14332.           Instead it  is left to 'Clock_ISR' to decrement 'Beep_Counter' and to
  14333.           issue a 'NOSOUND' when the counter has reached  0 (zero). 'Clock_ISR'
  14334.           is  installed  by  the  routine  'Get_Clock_Tick'  which is called by
  14335.           'Select_Format_File'  during  the  initialization   of  SCL.   It  is
  14336.           deinstalled  (the  pointers  in  the  BIOS Interrupt Vector Table are
  14337.           restored to their original values)  by  either 'Close_Formats' or, in
  14338.           case of an error, by 'Fatal_SCL_Error'. 
  14339.  
  14340.  
  14341.  
  14342.           The Data Communications Hardware Interrupt (Interrupt 0CH)          The Data Communications Hardware Interrupt (Interrupt 0CH)
  14343.  
  14344.           This interrupt  is handled by a SCL Interrupt Service routine in case
  14345.           your program involves data communications. 
  14346.           It is a  Hardware  Interrupt  signalling  several  conditions  on the
  14347.           asynchronous communications  port (COM1:). SCL uses this interrupt in
  14348.           its 'Low Level' data communication system to recognize if a character
  14349.           has been  received on  the RS232 interface and to read this character
  14350.           into its  receive  buffer.  For  further  information  on  SCL's Data
  14351.           communications routines please refer to Appendix B.  
  14352.  
  14353.  
  14354.                       
  14355.           Note:   Do not  call a  Interrupt Service  Routine directly from your          Note:
  14356.           program because it could hang the system and make a reboot necessary.
  14357.           The  same   applies  for  the  ISR  installation  and  deinstallation
  14358.           routines.
  14359.            
  14360.  
  14361.  
  14362.  
  14363.  
  14364.  
  14365.  
  14366.  
  14367.  
  14368.  
  14369.  
  14370.  
  14371.  
  14372.  
  14373.  
  14374.  
  14375.  
  14376.  
  14377.  
  14378.  
  14379.  
  14380.  
  14381.  
  14382.  
  14383.  
  14384.  
  14385.  
  14386.  
  14387.  
  14388.           Appendix A, SCL system details                               page 218          Appendix A, SCL system details                               page 218
  14389.  
  14390.  
  14391.  
  14392.  
  14393.  
  14394.  
  14395.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14396.  
  14397.  
  14398.                                Background Processing Tasks                               Background Processing Tasks                                                          
  14399.  
  14400.  
  14401.           SCL provides two 'userhooks'  for  background  processing  tasks, one
  14402.           referred to as 'Low Priority' and the other as 'High Priority'.
  14403.           SCL  provides  these  'userhooks'  in  form of two pointer-variables,
  14404.           'LP_Background_Pointer' and 'HP_Background_Pointer'. 
  14405.           The Procedures these  pointers  point  to  are  performed  by  SCL as
  14406.           Background Tasks.
  14407.           If SCL is initialized, both pointers point to dummy procedures within
  14408.           SCL which only contain a begin-end statement.
  14409.           These pointers can  be  redirected  by  you  to  point  to  any other
  14410.           procedure which is subsequently performed as background task by SCL.
  14411.           You can  basically specify any procedure as a background task as long
  14412.           as you follow a few rules:
  14413.  
  14414.           The procedure  may not  contain any  statements which  could cause to
  14415.           wait it on an event, like for example 'keypressed'.
  14416.           A Background  Procedure must  be compiled  with the 'Force far calls'
  14417.           option active ( {$F+} ).
  14418.            
  14419.           Both Background Tasks are being called from within  the SCL procedure
  14420.           'Handle_Format'. 'Handle_Format'  is event  driven. This means that a
  14421.           loop  containing  several  conditional   statements  is  continuously
  14422.           executed and  whenever one  of the  these conditions becomes TRUE the
  14423.           appropriate  task  is  performed.  In  addition   to  the  background
  14424.           procedures,  the  other  tasks  are  reading the keyboard if a key is
  14425.           pressed, processing an input character and updating field attributes.
  14426.  
  14427.  
  14428.           The logic within this loop is as follows:
  14429.  
  14430.                1.   Start
  14431.  
  14432.                2.   Perform the High Priority background task (unconditionally,
  14433.                     once per loop).
  14434.  
  14435.                3.   If a key is pressed then read it into the keyboard buffer 
  14436.  
  14437.                otherwise,
  14438.  
  14439.                4.   If a character  is  still  being  processed  then  carry on
  14440.                     processing it  (processing a single character takes between
  14441.                     2   and 4 loops depending on its type)
  14442.  
  14443.                otherwise,
  14444.  
  14445.                5.   If the keyboard buffer is not  empty then  fetch the  next 
  14446.                     character 
  14447.  
  14448.                otherwise,
  14449.  
  14450.  
  14451.  
  14452.  
  14453.  
  14454.           Appendix A, SCL system details                               page 219          Appendix A, SCL system details                               page 219
  14455.  
  14456.  
  14457.  
  14458.  
  14459.  
  14460.  
  14461.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14462.  
  14463.  
  14464.                6.   Perform   the Low  Priority Background Task and, if a field
  14465.                     attribute needs to be updated then update it. 
  14466.  
  14467.                7.   Go to Start.
  14468.            
  14469.  
  14470.           As you  can  see,  the  High  Priority  Background  Task  is executed
  14471.           unconditionally in every loop and the Low Priority Background Task is
  14472.           executed only in case no keyboard input is waiting to be processed.
  14473.           Due to the dynamic nature of  such a  loop, no  exact figures  can be
  14474.           given on  how often  the Background  Tasks are executed. As a rule of                                   Background  Tasks
  14475.           thumb, on a plain PC (4.77 Mhz) HP_Background_Task  is executed about
  14476.           1300 times  per second  and in  a fast  AT as much as 10000 times per
  14477.           second (assuming that the processing time required for the background
  14478.           task itself  is negligible).  The figures for Low Priority Background
  14479.           Tasks are roughly the same if the system  is idle  (typically most of
  14480.           the time) but can dramatically drop at times of heavy activity.
  14481.  
  14482.  
  14483.           There  are  certain  rules  you  should  follow if you use Background
  14484.           processing in order to avoid slowing down a program: 
  14485.  
  14486.            1.  Split any task into as many  subtasks as  possible, for example,
  14487.                if you want to write output to a printer, write one character at
  14488.                a time rather than the whole line. 
  14489.  
  14490.            2.  Exit the Background Task  procedure as  quick as  possible if no
  14491.                work has to be performed (Preferably use the 'Exit' statement).
  14492.  
  14493.            3.  Use High  Priority Background  tasks only when you have to. Most
  14494.                jobs can well be accomodated with Low Priority. 
  14495.  
  14496.            4.  Don't use any statements in a background procedure which wait on
  14497.                an event like 'Repeat until keypressed' or 'Delay(n)'. 
  14498.  
  14499.            5.  If you  use a  High Priority Background Task, its execution time
  14500.                should typically  not exceed  a few  milliseconds, otherwise you
  14501.                may slow down your program dramatically. 
  14502.  
  14503.  
  14504.  
  14505.           The following is a short example intended to give you an idea how 
  14506.           to use 'Background Tasks'.
  14507.           Further  examples  can  be  found  in  some of the 'Sample' programs,
  14508.           namely SAMPLE4.PAS, SAMPLE5.PAS and SAMPLE7.PAS.
  14509.  
  14510.  
  14511.  
  14512.  
  14513.  
  14514.  
  14515.  
  14516.  
  14517.  
  14518.  
  14519.  
  14520.           Appendix A, SCL system details                               page 220          Appendix A, SCL system details                               page 220
  14521.  
  14522.  
  14523.  
  14524.  
  14525.  
  14526.  
  14527.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14528.  
  14529.  
  14530.           Program EXAMPLE;
  14531.  
  14532.           uses Printer,SCL;
  14533.  
  14534.           {$F+}  {Force far calls}
  14535.           Procedure My_Background_Task;  {prints  asterixes  on  printer while}
  14536.           begin;             {format is being handled}
  14537.             write(lst,'*');
  14538.           end;
  14539.           {$F-}  {reset far calls}
  14540.  
  14541.           Procedure do_format;
  14542.           begin;
  14543.             select_format('main');
  14544.             display_format(0,0);
  14545.             repeat
  14546.              handle_format;
  14547.             until format_done;
  14548.           end;
  14549.  
  14550.           begin;
  14551.             select_format_file('myformats');
  14552.             lp_background_pointer:=@My_Background_Task; {assigns  it as LP }   
  14553.            Do_Format;                                      { background  task} 
  14554.           Close_formats;
  14555.           end; 
  14556.  
  14557.  
  14558.  
  14559.  
  14560.  
  14561.  
  14562.  
  14563.  
  14564.  
  14565.  
  14566.  
  14567.  
  14568.  
  14569.  
  14570.  
  14571.  
  14572.  
  14573.  
  14574.  
  14575.  
  14576.  
  14577.  
  14578.  
  14579.  
  14580.  
  14581.  
  14582.  
  14583.  
  14584.  
  14585.  
  14586.           Appendix A, SCL system details                               page 221          Appendix A, SCL system details                               page 221
  14587.  
  14588.  
  14589.  
  14590.  
  14591.  
  14592.  
  14593.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14594.  
  14595.  
  14596.                                READING AND WRITING FIELDS                               READING AND WRITING FIELDS                                                         
  14597.  
  14598.  
  14599.           For  a  better  comprehension  of  the  mechanisms  that  govern  the
  14600.           handling of formats the  following scenario  will be  used as working
  14601.           platform:
  14602.  
  14603.            1.  Select format A and display it on the screen.
  14604.            2.  Select format B and display it on top of format A.
  14605.            3.  Exit  format  B  restoring  format  A  in  its integrity on the 
  14606.                screen.
  14607.            4.  Exit format A 
  14608.            5.  Select format C and display it on the screen.
  14609.            6.  Exit format C.
  14610.  
  14611.           For each step a status of  the various  pointers is  given along with
  14612.           any relevant annotation.  
  14613.  
  14614.           Select_Format_file('thisfile');                 ** STEP 1 **                                                           ** STEP 1 **
  14615.           The format  stack is  still empty  and all S_Ptr, R_Ptr, W_Ptr do not
  14616.           point yet to any  valid  format.  In  other  words  no  field  can be
  14617.           accessed,   whether   read   or   written  at  this  point  in  time.
  14618.           Select_Format('A');
  14619.           Format 'A' is loaded into record  1 of  the format  stack. Both S_Ptr
  14620.           and W_Ptr  point to  this record and take 1 for value. From now on it
  14621.           is possible to write  to format  'A'. However  read of  format 'A' is
  14622.           still not possible since R_Ptr does not point yet to a valid format.
  14623.           Display_format(0,0);
  14624.           This statement does not affect the value of the pointers.
  14625.            Repeat 
  14626.            Handle_Format;
  14627.           This  is  where  R_Ptr  is  adjusted  making  a  read from format 'A'
  14628.           possible. All three pointers are now pointing to format 'A'  and have
  14629.           a value of 1.
  14630.            Select_Format('B');                            ** STEP 2 **                                                           ** STEP 2 **
  14631.           A  second  format  is  now  selected coexisting with format 'A' which
  14632.           remains on the stack with entry number 1  while format  'B' is loaded
  14633.           to the top of the stack assigned to record number 2. As a result both
  14634.           W_Ptr and S_Ptr point to format 'B' and have 2 for value  while R_Ptr
  14635.           is still  looking at  format 'A'  with its value remaining  unchanged
  14636.           (1).   For  this  reason    the    construct  W_Cont(5,G_Cont(4)); is
  14637.           interpreted as read the content of field 4 of format 'A' and place it
  14638.           into field 5 of format 'B'. By manually altering the W_Ptr value (ie.
  14639.           'W_Ptr:=1') it  is still  possible to  write to format 'A' should you
  14640.           fancy it.
  14641.             Display_format(0,0);
  14642.           Pointers keep their previous value.
  14643.             Repeat
  14644.               Handle_Format; 
  14645.           All three pointers are now pointing to format 'B'.
  14646.             UNTIL Format_Done;                            ** STEP 3 **                                                           ** STEP 3 **
  14647.           This statement  finishes  format  'B'  letting  SCL  restoring format
  14648.           'A'and implicitly  having both  S_Ptr and  W_Ptr point  to format 'A'
  14649.           with a value of 1 again. R_Ptr however is still pointing to format
  14650.  
  14651.  
  14652.           Appendix A, SCL system details                               page 222          Appendix A, SCL system details                               page 222
  14653.  
  14654.  
  14655.  
  14656.  
  14657.  
  14658.  
  14659.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14660.  
  14661.  
  14662.           'B'   keeping    its    value    unchanged    (2).    The   construct
  14663.           'W_Cont(5,G_Cont(4)); would  now mean: read the content of field 4 of
  14664.           format 'B' and place it into field 5 of format 'A'.
  14665.           UNTIL Format_Done;                              ** STEP 4 **                                                              ** STEP 4 **
  14666.           This finishes format 'A' and both W_Ptr and  S_Ptr do  not any longer
  14667.           point to a valid format and have 0 for value. The R_Ptr however still
  14668.           point to format 'A'. The construct 'WrkStr:=G_Cont(5) would then read
  14669.           the  content  of  field  5  on  format 'A' into WrkStr. Although both
  14670.           formats are now finished, this does not mean that they were destroyed
  14671.           but still  remain in the stack. For that matter a manual manipulation
  14672.           of R_Ptr  is genuinely  possible and  effective (ie.  'R_Ptr:= 2'; to
  14673.           point to format 'B'.
  14674.           Select_Format('C');                             ** STEP 5 **                                                           ** STEP 5 **
  14675.           This  loads  format  'C'  to  record 1 of the format stack physically
  14676.           overwriting format 'A' previously sitting there. Both S_Ptr and W_Ptr
  14677.           point to  format 'C' taking 1 for value while R_Ptr does not point to
  14678.           any format any longer and becomes 0. 
  14679.           Display_format(0,0);
  14680.           The pointers are not affected.
  14681.           Repeat 
  14682.            Handle_Format;
  14683.           Now all three pointers point to  format 'C'  and have  a value  of 1.
  14684.           UNTIL Format_Done;                              ** STEP 6 **                                                           ** STEP 6 **
  14685.           At this  moment both S_Ptr and W_Ptr no longer point to a valid stack
  14686.           record and have the value 0. R_Ptr however still points to format 'C'
  14687.           and keep  its value of 1. The stack itself has format 'C' in record 1
  14688.           and format 'B' in record 2. Any subsequent  format would  load on top
  14689.           of format 'C'.
  14690.  
  14691.           As seen  in this  scenario, unfinished  formats always  remain in the
  14692.           stack while  finished  formats  stay  in  the  stack  until  they are
  14693.           overwritten by new formats. While a format is still in the stack, its
  14694.           content  can  always  be  accessed  by  manual  modification  of  the
  14695.           appropriate pointer to the desired record number.  
  14696.  
  14697.  
  14698.  
  14699.  
  14700.  
  14701.  
  14702.  
  14703.  
  14704.  
  14705.  
  14706.  
  14707.  
  14708.  
  14709.  
  14710.  
  14711.  
  14712.  
  14713.  
  14714.  
  14715.  
  14716.  
  14717.  
  14718.           Appendix A, SCL system details                               page 223          Appendix A, SCL system details                               page 223
  14719.  
  14720.  
  14721.  
  14722.  
  14723.  
  14724.  
  14725.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14726.  
  14727.  
  14728.                              SCL Input Character Processing                             SCL Input Character Processing                                                           
  14729.  
  14730.  
  14731.  
  14732.           All Input Character processing in SCL is done by 'Handle_Format'. The
  14733.           sequence of events is as follows:
  14734.  
  14735.  
  14736.            1.  Read a Character from the Input Buffer into 'Char_Code'. Then go
  14737.                to 2.
  14738.  
  14739.            2.  If Char_Code  is specified as a User function Key in this format                                               User function Key
  14740.                or if Char Check is specified  for  the  active  field  then set                     Char Check
  14741.                'User_Function'  to  TRUE  and  exit 'Handle_Format' and go to 3
  14742.                upon return; otherwise go directly to 3. 
  14743.  
  14744.            3.  If 'Glb_Err' > 0 or char_Code = NoOp then discard  Char_code and
  14745.                go  to  1;  otherwise  if  Char_Code is invalid then perform the
  14746.                input error routine and then go to 1; otherwise go to 4. 
  14747.  
  14748.            4.  If this character is to be displayed, display it and  then go to
  14749.                1; otherwise go to 5. 
  14750.  
  14751.            5.  If Char_Code  is a  'Help' key then perform the appropriate Help
  14752.                routine and then go to 1; otherwise go to 6.
  14753.  
  14754.            6.  If Char_Code  terminates  the  current  field  then  perform the
  14755.                internal validity  check as specified for this field. In case of
  14756.                failure perform the error routine, discard the character  and go
  14757.                to 1; otherwise set 'End_of_Field' to TRUE, exit 'Handle_Format'
  14758.                and go to 7 upon return. 
  14759.  
  14760.            7.  If Glb_Err > 0  then  perform  the  error  routine,  discard the
  14761.                character and go to 1; otherwise, if char_Code = NoOp then go to
  14762.                1; otherwise terminate the field and go to 8. 
  14763.  
  14764.            8.  If this character terminates the format  as well  then go  to 10
  14765.                otherwise go to 9.
  14766.  
  14767.            9.  Determine the  next field and initialize it (make it the 'Active
  14768.                Field').   Then   set   'Begin_of_Field'   to   TRUE   and  exit
  14769.                'Handle_Format. Upon return go to 1. 
  14770.  
  14771.            10. Perform  the  internal  format  end  check (all mandatory fields
  14772.                filled in). If this  fails, perform  the error  routine, discard
  14773.                the input  character and  go to 1; otherwise set 'End_of_Format'
  14774.                to TRUE and exit 'Handle_Format'. Upon return go to 11. 
  14775.  
  14776.            11. If 'Glb_Err'  > 0  then perform  the error  routine, discard the
  14777.                input character  and go to 1; otherwise if Char_Code = NoOp then
  14778.                go to 1; otherwise terminate the format. 
  14779.  
  14780.  
  14781.  
  14782.  
  14783.  
  14784.           Appendix A, SCL system details                               page 224          Appendix A, SCL system details                               page 224
  14785.  
  14786.  
  14787.  
  14788.  
  14789.  
  14790.  
  14791.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14792.  
  14793.  
  14794.                                  The Error Message File                                 The Error Message File                                                       
  14795.  
  14796.  
  14797.           The file <Name>.ERR is the only SCL file not automatically created by
  14798.           SFD. It  is a  simple ASCII  text file  and can be modified with most
  14799.           word processors (or Turbo Pascal, for example). The  first 21 records
  14800.           and records 36 to 39 are occupied by SCL internal error messages, all
  14801.           other records are available for your own use.
  14802.           You find a 'virgin' errorfile only containing the  SCL internal error
  14803.           messages  on  your  distribution  disks under the name 'SCL.ERR'. The
  14804.           contents of SCL.ERR is also listed in Appendix B. You can simply copy
  14805.           this  file  to  <Workfile>.ERR  and  then  add  your  own messages as
  14806.           required. The records may  contain any  text and  are not  bound to a
  14807.           special format.  The only limitation is that their maximum length may
  14808.           not exceed 70 characters.
  14809.           On top of SCL internal error messages, this file can be used to store
  14810.           your own  error messages as well as any other strings you may require
  14811.           in your program.
  14812.           All you have to do to display a specific message  in the  event of an
  14813.           error occuring  while processing  a format is to set 'Glb_Err' to the
  14814.           appropriate record number.
  14815.           If you just want to access a string stored in the error  file you can
  14816.           use the SCL function 'Sys_Msg'.
  14817.           Since during  execution of  an SCL  program, all records of this file
  14818.           are stored in the heap memory,  access to  them is  very fast. Please
  14819.           note that  an error file is optional for an SCL program. If it is not
  14820.           found during the initialization of SCL, the appropriate record spaces
  14821.           in  the  heap  are  initialized  with just their corresponding record
  14822.           number which will then be displayed should an error be found. 
  14823.  
  14824.                        
  14825.           Example:          Example:
  14826.  
  14827.           Select_Format('X');
  14828.           W_Cont(2,Sys_Msg(18)); {writes  content  of  record  23  to  field 2}
  14829.           Display_Format(0,0);
  14830.           REPEAT
  14831.             Handle_Format;
  14832.             IF End_of_Format THEN
  14833.               IF not (G_CONT(1) in ['A'..'D','a'..'d']) THEN
  14834.                 Glb_Err:=43; {SCL  will execute its error routine and}         
  14835.                      {display the string stored in record 43 in}               
  14836.                 {the error  message field,  the attempt  to}                   
  14837.           {terminate the format will be refused} UNTIL Format_Done;
  14838.            
  14839.  
  14840.                        
  14841.           Note:  See also  Programming sample  4, 'Tricks  & Tips'  and 'System          Note:
  14842.           Resource considerations'.
  14843.  
  14844.  
  14845.  
  14846.  
  14847.  
  14848.  
  14849.  
  14850.           Appendix A, SCL system details                               page 225          Appendix A, SCL system details                               page 225
  14851.  
  14852.  
  14853.  
  14854.  
  14855.  
  14856.  
  14857.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14858.  
  14859.  
  14860.                           SCL - System Resource Considerations                          SCL - System Resource Considerations                                                              
  14861.  
  14862.  
  14863.           Disk Access          Disk Access
  14864.  
  14865.           SCL  reads  its  formats  from  disk.  This process can be speeded up
  14866.           considerably  by  including  a   'BUFFERS=NNN'  statement   into  the
  14867.           CONFIG.SYS file. It is recommended to set the number of buffers to at
  14868.           least 20 on computers running SCL programs.
  14869.           Another effective way is the use of a RamDisk or,  preferably, a Disk
  14870.           Cache Software (for example 'Lightning' from PCSG Inc). 
  14871.  
  14872.  
  14873.           Processor Requirements          Processor Requirements
  14874.  
  14875.           SCL  performs  well  on  any  compatible  PC  system. Due to a highly
  14876.           optimized  program  layout,  the  speed  differences  to  be expected
  14877.           between  a  8088  and  a  80286  based system are relatively small if
  14878.           compared with some other programs. The performance of  an 8088 System
  14879.           running an  SCL program  can be  increased considerably by exchanging
  14880.           the 8088 processor against a NEC V20. The V20 features,  beside being
  14881.           fully compatible  with the  8088, a  highly optimized string handling
  14882.           which results in about 20 % performance  improvement if used with SCL
  14883.           programs. 
  14884.  
  14885.            
  14886.           Format File -Disk Space Requirements          Format File -Disk Space Requirements
  14887.  
  14888.           The format file occupies 4608 bytes per format. 
  14889.           This means  that a 360 KB Floppy can hold a format file with up to 79
  14890.           formats. The other SCL files are relatively small  and typically only
  14891.           take up a few kilobytes all together. 
  14892.  
  14893.            
  14894.           SCL Code Space Requirements          SCL Code Space Requirements
  14895.  
  14896.           SCL  takes  up  about  15  to  35  KB  of  space  in the code segment
  14897.           (Dependent on the number of SCL routines you use). 
  14898.  
  14899.            
  14900.           SCL Data Space Requirements          SCL Data Space Requirements
  14901.  
  14902.           SCL stores most if its informations in the Heap, therefore the actual
  14903.           space required  in the  data segment  is relatively small. It depends
  14904.           largely on whether Datacom is used  or not  and is  typically between
  14905.           3.5 KB (no datacom) and around  10 KB if datacom is used.
  14906.           Within the heap memory, the static space required by SCL is about 
  14907.           12 KB plus the size of the file "<name>.MSG". 
  14908.           In  addition  to  the  static space, SCL`dynamically allocates during
  14909.           program runtime 4.6 KB for every format required to be stacked (refer
  14910.           to  SCL   Details  for  more  informations  on  the  format  stacking
  14911.           mechanism). 
  14912.  
  14913.  
  14914.  
  14915.  
  14916.           Appendix A, SCL system details                               page 226          Appendix A, SCL system details                               page 226
  14917.  
  14918.  
  14919.  
  14920.  
  14921.  
  14922.  
  14923.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14924.  
  14925.  
  14926.           The heap shares its space with the program stack. 
  14927.           There is no exact way to predict the size of the stack required for a
  14928.           program.  It  largely  depends  on  the  program's logical structure,
  14929.           especially if recursive routines are used.
  14930.           The only way  to  find  it  out  is  by  'trial  and  error',  i.e by
  14931.           decreasing it until the program does not run anymore.
  14932.  
  14933.  
  14934.           Total Memory Requirements          Total Memory Requirements
  14935.  
  14936.           Example1:   A small SCL program with about 5 to 10 screen formats, no          Example1:
  14937.           datacom and 100 field input messages.  Format stacking  is assumed to
  14938.           occur to  up to  3 levels, i.e max 3 unfinished formats can be on the
  14939.           stack while a fourth one is being processed. 
  14940.  
  14941.           Example2:  A very large program  with 50  to 100  screen formats, 500          Example2:
  14942.           field   messages,   datacom  and extensive  data  space requirements.
  14943.           Up to 10 formats are assumed to be stacked on the heap.  The code and
  14944.           data  requirements  quoted  represent  the  maximum values allowed in
  14945.           Turbo Pascal programs. 
  14946.  
  14947.  
  14948.  
  14949.           The approximate total memory  required to  run the  above two example
  14950.           programs can be roughly calculated as follows:
  14951.                                                           Example1  Example2 
  14952.           -----------------------------------------------------------------
  14953.           Code space  (approx) .............................  50 KB       90 KB
  14954.           Data space (approx) .............................  10 KB        64 KB
  14955.           Program Stack  (approx) ..........................   5  KB      40 KB
  14956.           Heap space (static) .............................  12 KB        12 KB
  14957.           Heap space  (field messages)  .....................   7 KB      36 KB
  14958.           Heap space (format stacking)  .................... 14  KB       46 KB
  14959.           Static space required by DOS (approx) ........... 35 KB     35 KB 
  14960.           -----------------------------------------------------------------
  14961.           Minimum total memory required to run (approx) .. 133 KB    323 KB 
  14962.  
  14963.  
  14964.  
  14965.           Example 1  could run  in a  256 KB  system with no problems and would          Example 1
  14966.           even  permit another 90 KB of memory  to be  used for  a Ramdisk   or
  14967.           another memory resident program. 
  14968.  
  14969.           Example 2 could just run on a system with 384 KB of memory.          Example 2
  14970.  
  14971.                        
  14972.           Note:   The above  figures represent  only coarse guidelines assuming          Note:
  14973.           two typical examples. The  exact requirements  of a  specific program
  14974.           are influenced  by many  different factors and may deviate from these
  14975.           examples quite considerably. 
  14976.  
  14977.  
  14978.  
  14979.  
  14980.  
  14981.  
  14982.           Appendix A, SCL system details                               page 227          Appendix A, SCL system details                               page 227
  14983.  
  14984.  
  14985.  
  14986.  
  14987.  
  14988.  
  14989.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  14990.  
  14991.  
  14992.                                       Tips & Tricks                                      Tips & Tricks                                                   
  14993.  
  14994.  
  14995.  
  14996.           Entry of Characters not normally accessible via the keyboard          Entry of Characters not normally accessible via the keyboard
  14997.  
  14998.           During the design of a format layout it  is possible  to redefine any
  14999.           keyboard  key   to  any  other  character  by  using  SFD's  keyboard
  15000.           redefinition feature. Outside of the Layout Designer, such  a feature
  15001.           does not  exist. If  you have  to enter  such a character outside the
  15002.           layout designer (for example to define a graphic character as a field
  15003.           delimiter), you  can use a BIOS feature: Press the 'ALT' key, hold it
  15004.           down and key in the ASCII`value of the desired character  in decimal,
  15005.           then release 'ALT'. 
  15006.           This feature  works on  most 'compatible' machines and you can use it
  15007.           in many other programs as well.
  15008.  
  15009.  
  15010.  
  15011.  
  15012.           Blinking Fields          Blinking Fields
  15013.  
  15014.           In case you use the 'Blink'  field  attribute  set  the  SCL Constant
  15015.           'Timer_Intervall' to  a very low value. Fast blinking fields are much
  15016.           easier on the eyes than slow blinking ones. In general, for ergonomic
  15017.           reasons, try to avoid blinking fields at all whenever possible.
  15018.  
  15019.  
  15020.  
  15021.  
  15022.           Use of the 'Intensity' field attribute on Color systems          Use of the 'Intensity' field attribute on Color systems
  15023.  
  15024.           If you use the 'Intensity' attribute together with 'Invert' to mark a
  15025.           field 'active' careful selection  of the  field background  color can
  15026.           lead to interesting effects. If you assume for example 'Brown' as the
  15027.           background color this will lead to  'Yellow' foreground  if the field
  15028.           becomes active. 
  15029.  
  15030.  
  15031.  
  15032.  
  15033.           The 'Selected' Attribute in Menus          The 'Selected' Attribute in Menus
  15034.  
  15035.           If  a  format  only  contains  one  group of 'Constant fields' like a
  15036.           typical menu, don't  be  concerned  about  any  'Selected' attributes
  15037.           since this format will instantly be terminated as soon as a field has
  15038.           been selected and for this reason it would never be visible anyway. 
  15039.           Probably the  nicest  combination  for  such  a  field  is  to select
  15040.           'Inverted' for active fields and no attributes at all for 'Selected'.
  15041.  
  15042.  
  15043.  
  15044.  
  15045.  
  15046.  
  15047.  
  15048.           Appendix A, tips and tricks                                  page 228          Appendix A, tips and tricks                                  page 228
  15049.                 
  15050.  
  15051.  
  15052.  
  15053.  
  15054.  
  15055.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15056.  
  15057.  
  15058.           Preventing automatic termination of a format          Preventing automatic termination of a format
  15059.  
  15060.           In some  cases it  may be  desirable to  prevent a  format from being
  15061.           automatically terminated after the last field has been  filled in. To
  15062.           achieve  this,  just  add  another  field (A Constant) after the last
  15063.           field and ask the user via  a message  to press  'Return' to  end the
  15064.           format (See Sample5). 
  15065.  
  15066.  
  15067.  
  15068.  
  15069.           Highlighting text on screen formats          Highlighting text on screen formats
  15070.  
  15071.           You can  simply highlight  text on a format by declaring this area of
  15072.           text as an 'output' field, then specify the  field as  being selected
  15073.           and  choose  the  appropriate  'Selected' attributes according to the
  15074.           appearance you desire. If you want to switch the highlighting  on and
  15075.           off  while  the  format  is  being  displayed,  just  use the 'W_Sel'
  15076.           construct.
  15077.  
  15078.  
  15079.  
  15080.            
  15081.           Special Fields          Special Fields
  15082.  
  15083.           See Programming sample 5 for some suggestions and ideas. 
  15084.  
  15085.  
  15086.  
  15087.  
  15088.           Storing strings in <Name>.ERR          Storing strings in <Name>.ERR
  15089.  
  15090.           It is good practice to store text strings  in the  error message file
  15091.           instead of  hardcoding them  into the program itself. Any text stored
  15092.           in the error message file can be easily  modified without recompiling
  15093.           the program  which makes   customization  and/or nationalization much
  15094.           easier. 
  15095.           Any strings stored in the error  message file  can be  accessed using
  15096.           the function 'Sys_Msg'.
  15097.  
  15098.  
  15099.  
  15100.  
  15101.  
  15102.  
  15103.  
  15104.  
  15105.  
  15106.  
  15107.  
  15108.  
  15109.  
  15110.  
  15111.  
  15112.  
  15113.  
  15114.           Appendix A, tips and tricks                                  page 229          Appendix A, tips and tricks                                  page 229
  15115.                 
  15116.  
  15117.  
  15118.  
  15119.  
  15120.  
  15121.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15122.  
  15123.  
  15124.           Using Field Input Messages for Help Screens          Using Field Input Messages for Help Screens
  15125.  
  15126.           Especially on small formats it  is  not  always  possible  to display
  15127.           field  input  messages.  Using  a 'User Interrupt Procedure', you can
  15128.           display these  messages in  an own  format whenever  for example 'F2'
  15129.           (Field Help) is pressed.
  15130.           This works as follows:
  15131.  
  15132.           Design a small format with just one 'output' field big enough to hold
  15133.           the field input message (70 characters long).
  15134.           Write a procedure similar  to the  following (assuming  you named the
  15135.           above format 'Msg').
  15136.  
  15137.  
  15138.           PROCEDURE  Msg_Help;  {Loads  format  'Msg'  and  displays the Field}
  15139.           BEGIN;        {Msg  of the present field in it  if F2  is pressed}   
  15140.           IF User_Function_Key and Char_Code = Code_F2 THEN
  15141.               BEGIN;
  15142.                 WITH Stack[S_Ptr].Field[Active_Field] DO
  15143.                   BEGIN;
  15144.                     IF   (Field_Msg_Nr > 0) AND {a msg for this field exists}  
  15145.                         (Input_Msg_Nr = 0) AND {no field to display it} 
  15146.                         (Field_Help_Screen <= Spaces THEN {none defined} 
  15147.                       BEGIN{ 
  15148.                         Select_Format('Msg');
  15149.                         W_Cont(1,User_Msg(Field_Msg_Nr); {obtain the Msg} 
  15150.                         Display_Format(0,0);              
  15151.                         REPEAT Handle_Format UNTIL Format_Done;
  15152.                         Char_Code:=Code_Noop;
  15153.                       END;
  15154.                   END;
  15155.               END;
  15156.           END;
  15157.  
  15158.           To use this feature  declare the  trigger key  (here 'F2')  as a user
  15159.           function key in all formats. 
  15160.           Within your program, make a call to 'Msg_Help' in the format handling
  15161.           loop as follows: 
  15162.  
  15163.  
  15164.           REPEAT 
  15165.             Handle_Format;
  15166.             Msg_Help;
  15167.             {other optional interrupt handling statements}
  15168.           UNTIL Format_Done;
  15169.  
  15170.           This results in the following:
  15171.           Whenever the trigger key is pressed and a message is  defined for the
  15172.           current field and if that format does not contain a message field and
  15173.           no help screen is defined for the current field then the format 'Msg'
  15174.           is called up displaying the message defined for the current field.
  15175.  
  15176.  
  15177.  
  15178.  
  15179.  
  15180.           Appendix A, tips and tricks                                  page 230          Appendix A, tips and tricks                                  page 230
  15181.                 
  15182.  
  15183.  
  15184.  
  15185.  
  15186.  
  15187.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15188.  
  15189.  
  15190.           Using 'Goto_Field'          Using 'Goto_Field'
  15191.  
  15192.           Sometimes it is desirable to skip one or  more fields  depending on a
  15193.           certain entry.  For example, let's assume you have a format where you
  15194.           want to skip fields  5 and  6 if  field 4  contains 'N'.  This can be
  15195.           easily realized using 'Goto_Field' as the following example shows.
  15196.  
  15197.  
  15198.  
  15199.           REPEAT 
  15200.             Handle_Format;
  15201.             IF end_of_field THEN 
  15202.               BEGIN{
  15203.                 IF (Active_Field = 4) AND G_Cont(4) = 'N' THEN 
  15204.                   BEGIN;
  15205.                     Goto_Field(7);         
  15206.                     Char_Code:=Code_Noop;   {must do this because otherwise}   
  15207.                END;                      {we  would leave  field 7  again}     
  15208.           END;
  15209.           UNTIL Format_Done;
  15210.  
  15211.  
  15212.  
  15213.  
  15214.  
  15215.  
  15216.  
  15217.  
  15218.  
  15219.  
  15220.  
  15221.  
  15222.  
  15223.  
  15224.  
  15225.  
  15226.  
  15227.  
  15228.  
  15229.  
  15230.  
  15231.  
  15232.  
  15233.  
  15234.  
  15235.  
  15236.  
  15237.  
  15238.  
  15239.  
  15240.  
  15241.  
  15242.  
  15243.  
  15244.  
  15245.  
  15246.           Appendix A, tips and tricks                                  page 231          Appendix A, tips and tricks                                  page 231
  15247.                 
  15248.  
  15249.  
  15250.  
  15251.  
  15252.  
  15253.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15254.  
  15255.  
  15256.  
  15257.  
  15258.  
  15259.  
  15260.  
  15261.  
  15262.  
  15263.  
  15264.  
  15265.  
  15266.  
  15267.  
  15268.  
  15269.  
  15270.  
  15271.  
  15272.  
  15273.  
  15274.  
  15275.  
  15276.                                        Appendix B                                       Appendix B                       
  15277.  
  15278.  
  15279.  
  15280.  
  15281.  
  15282.  
  15283.  
  15284.  
  15285.  
  15286.  
  15287.  
  15288.  
  15289.  
  15290.  
  15291.  
  15292.  
  15293.  
  15294.  
  15295.  
  15296.  
  15297.  
  15298.  
  15299.  
  15300.  
  15301.  
  15302.  
  15303.  
  15304.  
  15305.  
  15306.  
  15307.  
  15308.  
  15309.  
  15310.  
  15311.  
  15312.  
  15313.  
  15314.  
  15315.  
  15316.  
  15317.  
  15318.  
  15319.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15320.  
  15321.  
  15322.  
  15323.  
  15324.  
  15325.  
  15326.  
  15327.  
  15328.  
  15329.  
  15330.  
  15331.  
  15332.  
  15333.  
  15334.  
  15335.  
  15336.  
  15337.  
  15338.  
  15339.  
  15340.  
  15341.                           This Page is intentionally left blank
  15342.  
  15343.  
  15344.  
  15345.  
  15346.  
  15347.  
  15348.  
  15349.  
  15350.  
  15351.  
  15352.  
  15353.  
  15354.  
  15355.  
  15356.  
  15357.  
  15358.  
  15359.  
  15360.  
  15361.  
  15362.  
  15363.  
  15364.  
  15365.  
  15366.  
  15367.  
  15368.  
  15369.  
  15370.  
  15371.  
  15372.  
  15373.  
  15374.  
  15375.  
  15376.  
  15377.  
  15378.           Appendix B,  SCL procedures & functions                      page 233          Appendix B,  SCL procedures & functions                      page 233
  15379.  
  15380.  
  15381.  
  15382.  
  15383.  
  15384.  
  15385.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15386.  
  15387.  
  15388.  
  15389.           Alphabethic List of all User accessible SCL Procedures & Functions          Alphabethic List of all User accessible SCL Procedures & Functions
  15390.  
  15391.           Explanation of symbols used.          Explanation of symbols used.
  15392.  
  15393.                        
  15394.           + Full explanation in the SCL part of this manual.          + Full explanation in the SCL part of this manual.
  15395.           * Usage possible. See text.          * Usage possible. See text.
  15396.           / Usage possible but restricted. See text.          / Usage possible but restricted. See text.
  15397.           F Function          F Function
  15398.           P Procedure          P Procedure
  15399.  
  15400.  
  15401.           + P Beep;
  15402.           + P Blank_Format;
  15403.           + F Capital(Wrkstr: String): String;
  15404.           + F Charstring(Whatchar:CHAR;Len:INTEGER):String;
  15405.           + P Check_Date(VAR Date_Str:String10;VAR Y,M,D:WORD);
  15406.           + P Check_Time(VAR Time_Str:String10;VAR H,M,S:WORD);
  15407.           + P Clear_Rx_Buffer;
  15408.           + P Close_Dc;
  15409.           + P Close_Formats;
  15410.           + F Cts:BOOLEAN;
  15411.           * P Cursor(Top,Bottom:byte); Sets cursor shape 
  15412.           * P Cursor_off; Makes Cursor invisible
  15413.           + P C_Cont(Fieldnr:INTEGER);
  15414.           + F Date:String10;
  15415.           + F Date_String(Y,M,D:WORD):String10;
  15416.           * P DC(X,Y,Charcode:Byte);  Writes Charcode at screen pos X,Y.
  15417.           * P Dc_Break; Sends a 'Break' onto the datacom line. 
  15418.           + P Dc_Diagnose(On:BOOLEAN);
  15419.           + P Dc_Write(Code:Byte;VAR Ok:BOOLEAN);
  15420.           + P Disable_Port;
  15421.           + P Display_Format(Xoffset,Yoffset:INTEGER);
  15422.           + P DosExecute:String128);
  15423.           * P Draw_Char(Charcode:Byte);
  15424.               Writes Charcode at current pos on screen.
  15425.           + F Dsr:BOOLEAN;
  15426.           + P Enable_Port;
  15427.           + F Environment(Env_Name:String128):String128;
  15428.           + P Execute(Progstring:String128);
  15429.           + F Exist(Fn : String80):BOOLEAN;
  15430.           * P Fatal_Scl_Error(Errornr:INTEGER);
  15431.               Displays error msg and halts SCL. Dont use Errornr < 4,    
  15432.               these are for internal use only. 
  15433.           + P Finish_Format(Check:BOOLEAN);
  15434.           + F Format_Done:BOOLEAN;
  15435.  
  15436.  
  15437.  
  15438.  
  15439.  
  15440.  
  15441.  
  15442.  
  15443.  
  15444.           Appendix B,  SCL procedures & functions                      page 234          Appendix B,  SCL procedures & functions                      page 234
  15445.  
  15446.  
  15447.  
  15448.  
  15449.  
  15450.  
  15451.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15452.  
  15453.  
  15454.           * F Format_Name:string80; Returns the name of the active format 
  15455.           + P Frontstring(STR:String;VAR Head,Tail:String);
  15456.           * P Ftab(VAR Wrkstr:String;Fill_Char:CHAR;
  15457.                              Just:Position;Len:INTEGER);
  15458.               Justifies  Wrkstr in a field of length Len according to Just.    
  15459.               All blanks are replaced by Fill_Char. See declaration of type    
  15460.               Position.
  15461.           / F Get_Att(X,Y:INTEGER):Byte;
  15462.               Returns video attribute of position X,Y. X=1..80, Y=1..25. 
  15463.           * P Get_Country;
  15464.               Updates Country dependant Info. If SCL_Country > 0 then Info     
  15465.               is updated accordingly, otherwise according to CONFIG.SYS. 
  15466.           + P Get_Dc_Status(VAR Status:INTEGER);
  15467.           / P Get_Next_Char(VAR Charnumber:INTEGER ; VAR Inputchar:CHAR);  
  15468.               Waits until a key is pressed and returns Code and Image of    
  15469.               the key. Code is SCL notation. Don't use together with 
  15470.               background processing (you're stuck until a key is pressed).
  15471.           * P Get_Screen_Mode;
  15472.               Sets the variables Screen_Mode, Mono_Adapter and Color_True  
  15473.               according to the current screen mode used. 
  15474.           + P Goto_Field(Fn:INTEGER);
  15475.           + F G_Cont(Fn:INTEGER):String80;
  15476.           + F G_Sel(Fn:INTEGER):BOOLEAN;
  15477.           + P Handle_Format;
  15478.           + P Hp_Background_Task; FORWARD;
  15479.           * P Input_Error(Msgnr:INTEGER);
  15480.               Displays error msg in Err msg Field and beeps.
  15481.           + F Julian_Date(VAR Y,M,D:WORD):REAL;
  15482.           + F Justify_Center(STR:String;Len:INTEGER):String;
  15483.           + F Justify_Left(STR:String;Len:INTEGER):String;
  15484.           + F Justify_Right(STR:String;Len:INTEGER):String;
  15485.           / F Next_Char(VAR Esc:BOOLEAN):CHAR;
  15486.               Waits until a key is pressed and returns ASCII Code. If key 
  15487.               generated a two byte code then 'Esc' is true. See 
  15488.               'Get_Next_Char' for restrictions.
  15489.           + P Normal_Date(Julian:REAL;VAR Y,M,D:WORD);
  15490.           + F Nr(St:String80):INTEGER;
  15491.           + P Open_Dc(VAR Result:INTEGER);
  15492.           / P Paint_Format_Frame(Color:Byte);
  15493.               Changes video attr. of first and last row and column of current
  15494.               format to color. S_Ptr must be valid ( > 0).
  15495.           + F Power(Mantissa,Exponent:REAL):REAL;
  15496.           + P Receive_Char(VAR Code:INTEGER;VAR Ok:BOOLEAN);
  15497.           + F Ri:BOOLEAN;
  15498.           + F Rnr(s:string80):real;
  15499.           + F Rst(r:Real;Decimals:integer):string;
  15500.           * F Rtime:REAL;
  15501.               Returns current time in hundreds of seconds since midnight. 
  15502.  
  15503.  
  15504.  
  15505.  
  15506.  
  15507.  
  15508.  
  15509.  
  15510.           Appendix B,  SCL procedures & functions                      page 235          Appendix B,  SCL procedures & functions                      page 235
  15511.  
  15512.  
  15513.  
  15514.  
  15515.  
  15516.  
  15517.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15518.  
  15519.  
  15520.           + P R_Cont(Fieldnr:INTEGER;VAR Contents:String80);
  15521.           + P R_Sel(Fieldnr:INTEGER; VAR Sel:BOOLEAN);
  15522.           + P Select_Format(Fname:String10);
  15523.           + P Select_Format_File(Filename:String10);
  15524.           + PSend_Buffer(VARTx_Buff;Buff_Start,Buff_Length,Bcc_add
  15525.             :INTEGER; 
  15526.           + P Send_Char(Code:Byte;var Ok:BOOLEAN);
  15527.           + P Send_String(Data:String255;VAR Ok:BOOLEAN);
  15528.           / P Set_Att(X,Y:INTEGER;Color:Byte);
  15529.               Changes the video attribute at X,Y to color. X = 1..80,    
  15530.               Y = 1..25. 
  15531.           + P Set_Dc_Params;
  15532.           + P Set_Dtr(On:BOOLEAN);
  15533.           / P Set_Edit_Mode(Yes:BOOLEAN);
  15534.               Sets or resets edit mode. Make sure that Active_Field > 0.
  15535.           / P Set_Field_Color(Fieldnr:INTEGER;Color:Byte);
  15536.               Changes video attributes of current field to  color.  Fieldnr
  15537.               must be valid.
  15538.           / P Set_Mx(Value:INTEGER);
  15539.               Move  Cursor to Column = Value. Conflicts with SCL likely.  
  15540.           / P Set_My(Value:INTEGER);
  15541.               Move Cursor to Row = Value. Conflicts with SCL likely. 
  15542.           + P Set_Rts(On:BOOLEAN);
  15543.           / P Set_Screen_Color(Color:Byte);
  15544.               Changes the complete screen to color (incl all fields).  
  15545.           + F St(I:INTEGER):String80;
  15546.           + P Strip(VAR Wrkstr:String;VAR Len:INTEGER);
  15547.           + F Stripleft(Wrkstr: String): String;
  15548.           + F Stripright(Wrkstr: String): String;
  15549.           + F Sys_Msg(Nr:INTEGER):String80;
  15550.           + F Time(Seconds:BOOLEAN):String10;
  15551.           + F Time_String(H,M,S:WORD):String10;
  15552.           + F Tx_Ok:BOOLEAN;
  15553.           + F Weekday(Y,M,D:WORD):INTEGER;
  15554.           + P W_Cont(Fieldnr:INTEGER;Cont:String80);
  15555.           / P W_Crt(Fieldnr:INTEGER;Msg:String80);
  15556.               Writes  Msg to the specified field.  Does  not  change/Update 
  15557.               Format content (Screen only). S_Ptr must be valid (>0). 
  15558.           + P W_Sel(Fieldnr:INTEGER;Sel:BOOLEAN);
  15559.           + F X_Max:INTEGER;
  15560.           + F Y_Max:INTEGER;
  15561.  
  15562.  
  15563.  
  15564.  
  15565.  
  15566.  
  15567.  
  15568.  
  15569.  
  15570.  
  15571.  
  15572.  
  15573.  
  15574.  
  15575.  
  15576.           Appendix B,  SCL procedures & functions                      page 236          Appendix B,  SCL procedures & functions                      page 236
  15577.  
  15578.  
  15579.  
  15580.  
  15581.  
  15582.  
  15583.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15584.  
  15585.  
  15586.                                Datacom Control Characters                               Datacom Control Characters
  15587.  
  15588.  
  15589.  
  15590.           CONST    
  15591.             Nul       = $0;
  15592.             Soh       = $1;
  15593.             Stx       = $2;
  15594.             Etx       = $3;
  15595.             Eot       = $4;
  15596.             Enq       = $5;
  15597.             Ack       = $6;
  15598.             Bel       = $7;
  15599.             Con       = $7;
  15600.             Bs        = $8;
  15601.             Ht        = $9;
  15602.             Lf        = $a;
  15603.             Vt        = $b;
  15604.             Ff        = $c;
  15605.             Cr        = $d;
  15606.             S0        = $e;
  15607.             S1        = $f;
  15608.             Dle       = $10;
  15609.             Dc1       = $11;
  15610.             Dc2       = $12;
  15611.             Dc3       = $13;
  15612.             Dc4       = $14;
  15613.             Nak       = $15;
  15614.             Syn       = $16;
  15615.             Etb       = $17;
  15616.             Can       = $18;
  15617.             Em        = $19;
  15618.             Sub       = $1a;
  15619.             Esc       = $1b;
  15620.             Fs        = $1c;
  15621.             Gs        = $1d;
  15622.             Rs        = $1e;
  15623.             Us        = $1f;
  15624.             Pol       = $70;
  15625.             Sel       = $71;
  15626.             Fsl       = $73;
  15627.             Bsl       = $74;
  15628.             Del       = $7f;
  15629.             
  15630.  
  15631.  
  15632.  
  15633.  
  15634.  
  15635.  
  15636.  
  15637.  
  15638.  
  15639.  
  15640.  
  15641.  
  15642.           Appendix B,  SCL procedures & functions                      page 237          Appendix B,  SCL procedures & functions                      page 237
  15643.  
  15644.  
  15645.  
  15646.  
  15647.  
  15648.  
  15649.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15650.  
  15651.  
  15652.                                Field Attributes and Colors                               Field Attributes and Colors                               ___________________________
  15653.  
  15654.  
  15655.  
  15656.           Possible Field Attributes:          Possible Field Attributes:
  15657.  
  15658.                        -------- Monochrome ----------
  15659.                        Normal     Active     Selected       Active (Color)-----
  15660.           -----------------------------------------------------------
  15661.           Inverted       N           Y           Y               Y 
  15662.           Intensity      Y           Y           Y               Y
  15663.           Underlined     N           Y           Y               N
  15664.           Marked         N           Y 1)        Y               N
  15665.           Blink          N           Y           N               Y
  15666.  
  15667.  
  15668.           1) The marks blink if used as an attribute for 'Active'.
  15669.                        
  15670.           Note:   Multiple choices  of the above attributes are possible. Refer          Note:
  15671.           to the SFD part of the  manual for  restrictions applying  to certain
  15672.           combinations of attributes.
  15673.           'Normal' and  'Selected' on  color systems are specified by any valid
  15674.           Foreground/Background color combination according to the table below.
  15675.  
  15676.  
  15677.  
  15678.  
  15679.           Colors. (Systems with color graphics adapter).           Colors. (Systems with color graphics adapter).
  15680.                           
  15681.                        Background      Foreground
  15682.           ---------------------------------------
  15683.           Black             Y               Y
  15684.           Blue              Y               Y
  15685.           Green             Y               Y
  15686.           Cyan              Y               Y
  15687.           Red               Y               Y
  15688.           Magenta           Y               Y
  15689.           Brown             Y               Y
  15690.           Light grey        Y               Y
  15691.           Dark Grey         N               Y
  15692.           Light Blue        N               Y
  15693.           Light Green       N               Y
  15694.           Light Cyan        N               Y
  15695.           Light Red         N               Y
  15696.           Light Magenta     N               Y
  15697.           Yellow            N               Y
  15698.           White             N               Y
  15699.  
  15700.  
  15701.  
  15702.  
  15703.  
  15704.  
  15705.  
  15706.  
  15707.  
  15708.           Appendix B,  SCL procedures & functions                      page 238          Appendix B,  SCL procedures & functions                      page 238
  15709.  
  15710.  
  15711.  
  15712.  
  15713.  
  15714.  
  15715.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15716.  
  15717.  
  15718.                                 Functions in SCL Programs                                Functions in SCL Programs                                _________________________
  15719.  
  15720.  
  15721.  
  15722.  
  15723.           Right     : 1. In Travel Mode : Next Field.                             Travel Mode
  15724.                       2. In Entry Mode : Next Character.                            Entry Mode
  15725.  
  15726.           Left      : 1. In Travel Mode : Previous Field.                             Travel Mode
  15727.                       2. In Entry Mode  : Previous Character.                            Entry Mode
  15728.  
  15729.           Down      : First field on next line.
  15730.  
  15731.           Up        : Last field on previous line.
  15732.  
  15733.           Home      : First field in line.
  15734.  
  15735.           End       : Last field in line.
  15736.  
  15737.           PgDn      : Last field on format.
  15738.  
  15739.           PgUp      : First field on format.
  15740.  
  15741.           Tab       : Next field.
  15742.  
  15743.           ShiftTab  : Previous field.
  15744.  
  15745.           Backspace : Delete character left of cursor.
  15746.  
  15747.           Insert    : Insert a space at the cursor position.
  15748.  
  15749.           Delete    : Delete character under cursor.
  15750.  
  15751.           Return    : 1. Entry mode.
  15752.                       2. Finish  field  and  advance to  next  field  (if      
  15753.                          already in the last field, finish the format).    
  15754.                       3. Toggle Selected Status of a Constant.                                Selected
  15755.  
  15756.           Escape    : Finish Format.
  15757.  
  15758.           F1        : Format related Help information.
  15759.  
  15760.           F2        : Field related Help information.
  15761.  
  15762.           F3        : UNDO. Restores field to previous content.
  15763.  
  15764.           F10       : Abort current activity (not valid with every format).
  15765.  
  15766.  
  15767.  
  15768.  
  15769.  
  15770.  
  15771.  
  15772.  
  15773.  
  15774.           Appendix B,  SCL procedures & functions                      page 239          Appendix B,  SCL procedures & functions                      page 239
  15775.  
  15776.  
  15777.  
  15778.  
  15779.  
  15780.  
  15781.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15782.  
  15783.  
  15784.                                Standard SCL Error Messages                               Standard SCL Error Messages                               ___________________________
  15785.  
  15786.           <1> Format File not found
  15787.           <2> Not enough Memory to run
  15788.           <3> This program requires 80 column screen
  15789.           <4> Format does not fit at specified location
  15790.           <5> Format not found
  15791.           <6> Insufficient Mem in Heap for screen
  15792.           <7> Runtime or I/O error while SCL was running
  15793.           <8> Format file not sorted or integrity error
  15794.           <9> Attempt to read field while format read pointer is zero 
  15795.           <10> Attempt to read from invalid fieldnumber
  15796.           <11> Break key pressed
  15797.           <12> Attempt  to write  to field  while format  write pointer is zero
  15798.           <13> Attempt to write to invalid field number
  15799.           <14> Invalid path specified
  15800.           <15> Invalid Key Pressed
  15801.           <16> Warning: End of Field
  15802.           <17> Format has only one Field
  15803.           <18> Input mandatory
  15804.           <19> Numeric Data expected
  15805.           <20> Value entered too small
  15806.           <21> Value entered too big
  15807.           <22>
  15808.           <23>
  15809.           <24>
  15810.           <25>
  15811.           <26>
  15812.           <27>
  15813.           <28>
  15814.           <29>
  15815.           <30>
  15816.           <31>
  15817.           <32>
  15818.           <33>
  15819.           <34>
  15820.           <35>
  15821.           <36> Integer number expected
  15822.           <37> Helpfile not available
  15823.           <38> This Helpfunction not available
  15824.           <39> Autohelp-Format not found
  15825.           <40>
  15826.  
  15827.  
  15828.  
  15829.  
  15830.  
  15831.  
  15832.  
  15833.  
  15834.  
  15835.  
  15836.  
  15837.  
  15838.  
  15839.  
  15840.           Appendix B,  SCL procedures & functions                      page 240          Appendix B,  SCL procedures & functions                      page 240
  15841.  
  15842.  
  15843.  
  15844.  
  15845.  
  15846.  
  15847.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15848.  
  15849.  
  15850.  
  15851.                                    The Shareware Idea                                   The Shareware Idea
  15852.  
  15853.           Shareware (sometimes  called  User supported  Software  or 
  15854.           freeware) attempts to provide useful programs to the  PC community at
  15855.           low  cost  by  reducing  the  dependence  on  conventional  marketing
  15856.           channels.
  15857.           Several software developers have  proven that  the concept  works, to
  15858.           the  mutual  benefit  of  the  independent program authors and the PC
  15859.           community itself.
  15860.           The user benefits by the availability of low  cost software  which he
  15861.           can evaluate on his own system before making the decision to purchase
  15862.           it.  The author benefits by being able  to enter  the software market
  15863.           without  extensive  monetary  risks.    The user community determines
  15864.           which products succeed based  on their  true utility,  rather than on
  15865.           their marketing achievements.
  15866.  
  15867.  
  15868.  
  15869.  
  15870.  
  15871.  
  15872.  
  15873.  
  15874.  
  15875.  
  15876.  
  15877.  
  15878.  
  15879.  
  15880.  
  15881.  
  15882.  
  15883.  
  15884.  
  15885.  
  15886.  
  15887.  
  15888.  
  15889.  
  15890.  
  15891.  
  15892.  
  15893.  
  15894.  
  15895.  
  15896.  
  15897.  
  15898.  
  15899.  
  15900.  
  15901.  
  15902.  
  15903.  
  15904.  
  15905.  
  15906.           Appendix B, OASIS products                                   page 241          Appendix B, OASIS products                                   page 241
  15907.  
  15908.  
  15909.  
  15910.  
  15911.  
  15912.  
  15913.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15914.  
  15915.  
  15916.                             OASIS Products & Licencing Terms                            OASIS Products & Licencing Terms
  15917.  
  15918.           The  following  products  will  be  available  from  EUREKA  SOFTWARE
  15919.           ASSOCIATES:
  15920.  
  15921.                - OASIS Demo package
  15922.                - OASIS Evaluation software
  15923.                - OASIS 
  15924.  
  15925.  
  15926.  
  15927.           OASIS Demo package          OASIS Demo package          __________________
  15928.  
  15929.           Description          Description
  15930.  
  15931.           This  package  as  its  name  indicates  is  only  to  be   used  for
  15932.           demonstration purposes.  It is  ment to  give you a taste of what you
  15933.           can achieve with OASIS. Each demo  application comes  with the source
  15934.           code and the associated documentation commenting each procedure. This
  15935.           package does not require you  to  register,  feel  free  to  copy and
  15936.           distribute this package and use some of its handy utilities.
  15937.  
  15938.  
  15939.           Distribution          Distribution
  15940.  
  15941.                - Download 
  15942.                - Mail order 
  15943.  
  15944.  
  15945.           Pricing (No registration required)          Pricing
  15946.  
  15947.                - Download                         no charge
  15948.                - Mail order                       $10
  15949.                  includes disk & hard copy
  15950.  
  15951.  
  15952.  
  15953.  
  15954.  
  15955.  
  15956.  
  15957.  
  15958.  
  15959.  
  15960.  
  15961.  
  15962.  
  15963.  
  15964.  
  15965.  
  15966.  
  15967.  
  15968.  
  15969.  
  15970.  
  15971.  
  15972.           Appendix B, OASIS products                                   page 242          Appendix B, OASIS products                                   page 242
  15973.  
  15974.  
  15975.  
  15976.  
  15977.  
  15978.  
  15979.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  15980.  
  15981.  
  15982.           OASIS Evaluation (This package)          OASIS Evaluation          ________________
  15983.  
  15984.  
  15985.           Description          Description
  15986.  
  15987.           This package is the evaluation version of OASIS. It offers almost all
  15988.           OASIS features and  formats  (screens)  created  with  the evaluation
  15989.           version are entirely compatible with full blown version of OASIS. The
  15990.           limitation of this version resides in the number of formats (screens)
  15991.           you can  handle in  any single file, the limit is set to 20 for OASIS
  15992.           Evaluation. This  mean  you  can  still  create  an  application that
  15993.           requires up  to 20  screens, for more complexe applications with more
  15994.           screens you need the full version of OASIS. 
  15995.  
  15996.  
  15997.           Distribution          Distribution
  15998.  
  15999.                - Download
  16000.                - Mail order        
  16001.  
  16002.  
  16003.           Licencing Terms          Licencing Terms
  16004.  
  16005.           OASIS Evaluation is NOT public domain  software, it  is a copyrighted
  16006.           product  distributed  by  EUREKA  SOFTWARE ASSOCIATES. You are hereby
  16007.           granted a limited license to use  OASIS, and  to copy  it and further
  16008.           distribute it, under the following conditions:
  16009.  
  16010.           1) No fee other than the cost of media and copying (max $10 per copy)
  16011.           may  be  charged  for   such  copying   and  distribution,  otherwise
  16012.           permission of EUREKA SOFTWARE ASSOCIATES is required.
  16013.  
  16014.           2) OASIS  Evaluation may  ONLY be  distributed in its original state,
  16015.           complete and without any  modifications  or  changes  to  the program
  16016.           itself or to any of its data files.
  16017.  
  16018.           3) Use  without registration must be limited to a reasonable time (no
  16019.           more than 14 days) and for test and  evaluation purposes  only, after
  16020.           which it must be registered in accordance with the following terms.
  16021.  
  16022.  
  16023.  
  16024.  
  16025.  
  16026.  
  16027.  
  16028.  
  16029.  
  16030.  
  16031.  
  16032.  
  16033.  
  16034.  
  16035.  
  16036.  
  16037.  
  16038.           Appendix B, OASIS products                                   page 243          Appendix B, OASIS products                                   page 243
  16039.  
  16040.  
  16041.  
  16042.  
  16043.  
  16044.  
  16045.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  16046.  
  16047.  
  16048.           Commercial use:          ______________
  16049.  
  16050.           If OASIS  Evaluation Software is used in a commercial & institutional
  16051.           environment users must register  under the  'Commercial Users Licence
  16052.           Agreement'  scheme.  Any  use  of  OASIS  Evaluation beyond the trial
  16053.           period is a copyright violation.
  16054.  
  16055.           Conditions:
  16056.           Within  the  terms  of   this  agreement,   a  corporation,  company,
  16057.           institution, organization,  or individual can use OASIS Evaluation to
  16058.           produce programs for commercial  purposes  subject  to  the following
  16059.           conditions:
  16060.  
  16061.           1.   This  license  applies  to  the  OASIS  Evaluation  software  as
  16062.                described in this manual and its documentation.
  16063.  
  16064.           2.   You must treat this software just like a  book ONLY  ONE CPU PER
  16065.                LICENSE can use the software at the same time in the original or
  16066.                modified forms. However, you  are  authorized  to  make archival
  16067.                copies for safekeeping.
  16068.  
  16069.           3.   You  may  produce  any  number  of  executable code programs for
  16070.                profit for world-wide distribution  with  this  software without
  16071.                royalties to the author.
  16072.  
  16073.           4.   The license  applies to  the original  copy of  this software as
  16074.                well as to updated versions which may become available. There is
  16075.                no further  charge for using the updated versions. The author is
  16076.                neither obligated to provide  updated  versions  nor  notices of
  16077.                error corrections.  The author  is not  obligated to provide any
  16078.                services of any kind to support OASIS Evaluation .
  16079.  
  16080.           6.   The user agrees to conscientiously respect the copyright  to the
  16081.                author  of  the  code  and  not  to  illegally,  unethically, or
  16082.                neglectfully exploit the services provided by the author.
  16083.  
  16084.           7.   This code is provided "as  is"  without  warranty  of  any kind,
  16085.                either  expressed  or  implied,  included but not limited to the
  16086.                implied warranty of merchantability  and fitness  for a specific
  16087.                purpose. The  entire risk  as to  the quality and performance of
  16088.                the coding  is with  you. Should  the code  prove defective, you
  16089.                assume  the  entire  cost  of all necessary servicing, repair or
  16090.                correction.
  16091.  
  16092.           8.   In no event will the author  be liable  to you  for any damages,
  16093.                including any  lost profits, lost savings or other incidental or
  16094.                consequential damages arising out of the use or inability to use
  16095.                this code.
  16096.  
  16097.           9.   The User acknowledges having read this agreement and the License
  16098.                Statement, understands them, and agrees  to  be  bound  by their
  16099.                terms and conditions. 
  16100.  
  16101.  
  16102.  
  16103.  
  16104.           Appendix B, OASIS products                                   page 244          Appendix B, OASIS products                                   page 244
  16105.  
  16106.  
  16107.  
  16108.  
  16109.  
  16110.  
  16111.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  16112.  
  16113.  
  16114.           Private (non-profit) use:          ________________________
  16115.  
  16116.           If OASIS  Evaluation is used privately only and not for profit making
  16117.           purposes, please  register under  the private  user licence agreement
  16118.           scheme.
  16119.           The applicable  terms are,  apart from point 3, identical to the ones
  16120.           listed above.
  16121.  
  16122.  
  16123.  
  16124.           Pricing          Pricing
  16125.  
  16126.                                       Registration               Registration                                      $40
  16127.                does not include disk or manual
  16128.  
  16129.  
  16130.                                       Private Licence                             Private Licence                                
  16131.                includes registration, distribution disks         $60 
  16132.                & reference manual on disk
  16133.  
  16134.                includes registration, distribution disks         $80 
  16135.                &  with hard copy manual
  16136.                                      
  16137.  
  16138.                                       Commercial Users Licence                  Commercial Users Licence
  16139.                includes registration, distibution disks          $120 
  16140.                & hard copy manual.
  16141.                                      
  16142.  
  16143.  
  16144.  
  16145.  
  16146.  
  16147.  
  16148.  
  16149.  
  16150.  
  16151.  
  16152.  
  16153.  
  16154.  
  16155.  
  16156.  
  16157.  
  16158.  
  16159.  
  16160.  
  16161.  
  16162.  
  16163.  
  16164.  
  16165.  
  16166.  
  16167.  
  16168.  
  16169.  
  16170.           Appendix B, OASIS products                                   page 245          Appendix B, OASIS products                                   page 245
  16171.  
  16172.  
  16173.  
  16174.  
  16175.  
  16176.  
  16177.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  16178.  
  16179.  
  16180.           OASIS          OASIS          _____
  16181.  
  16182.           Description          Description
  16183.  
  16184.           Identical to OASIS Evaluation but no  limit to  the number  of format
  16185.           per file.
  16186.  
  16187.  
  16188.           Distribution           Distribution 
  16189.  
  16190.                - Mail order
  16191.  
  16192.                     Note:  Application  available,  Documentation draft version
  16193.                     approx. 250 pages.
  16194.  
  16195.  
  16196.           Licensing terms          Licensing terms
  16197.  
  16198.                - Same as OASIS Evaluation Commercial use.
  16199.  
  16200.  
  16201.           Pricing          Pricing
  16202.  
  16203.                - includes registration, distibution disks        $199 
  16204.                  & hard copy manual.
  16205.  
  16206.  
  16207.  
  16208.  
  16209.  
  16210.  
  16211.  
  16212.  
  16213.  
  16214.  
  16215.  
  16216.  
  16217.  
  16218.  
  16219.  
  16220.  
  16221.  
  16222.  
  16223.  
  16224.  
  16225.  
  16226.  
  16227.  
  16228.  
  16229.  
  16230.  
  16231.  
  16232.  
  16233.  
  16234.  
  16235.  
  16236.           Appendix B, OASIS products                                   page 246          Appendix B, OASIS products                                   page 246
  16237.  
  16238.  
  16239.  
  16240.  
  16241.  
  16242.  
  16243.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  16244.  
  16245.  
  16246.                              ------------------------
  16247.                              | Invoice & Order Form |                               Invoice & Order Form
  16248.                              ------------------------
  16249.  
  16250.           =================================================================
  16251.           "                   O R D E R     F O R M                       "                              O R D E R     F O R M
  16252.           "==============================================================="
  16253.           " Date: __ / __ / __                PO#: ______________         "
  16254.           "---------------------------------------------------------------"
  16255.           " Qty     Description                            $/unit         "
  16256.           "---------------------------------------------------------------"
  16257.           "     |                                        |        |       "
  16258.           " __  |OASIS Demo package mail order  *        | $10.00 |___.__ "
  16259.           "     |                                        |        |       "
  16260.           " __  |OASIS Evaluation Registration           | $40.00 |___.__ "
  16261.           "     |(does not include disk)                 |        |       "
  16262.           "     |                                        |        |       "
  16263.           " __  |OASIS Evaluation Private Licence  *     | $60.00 |___.__ "
  16264.           "     |(registration, disks, manual on disk)   |        |       "
  16265.           "     |                                        |        |       "
  16266.           " __  |OASIS Evaluation Private Licence  **    | $80.00 |___.__ "
  16267.           "     |(registration, disks and manual)        |        |       "
  16268.           "     |                                        |        |       "
  16269.           " __  |OASIS Evaluation Commercial User Licence|$120.00 |___.__ "
  16270.           "     |(registration, disks and manual)  **    |        |       "
  16271.           "     |                                        |        |       "
  16272.           " __  |OASIS  Commercial User Licence    **    |$199.00 |___.__ "
  16273.           "     |(registration, disks and manual)        |        |       "
  16274.           "     |                                        |        |       "
  16275.           "==============================================================="
  16276.           "  Michigan residents add 4% sales tax       Subtotal: $____.__ "
  16277.           "  Shipping per order                        Shipping: $____.__ "
  16278.           "      *  US $3 first copy, $1 other copies       Tax: $____.__ "
  16279.           "     **  US $3 first copy, $2 other copies     Total: $____.__ "                                                          Total
  16280.           "---------------------------------------------------------------"
  16281.           "  Method of Payment:  ( ) Check       ( ) Money Order          "
  16282.           "                                                               "
  16283.           "  Make check payable to:   EUREKA SOFTWARE ASSOCIATES          "                                      EUREKA SOFTWARE ASSOCIATES
  16284.           "                           2344 Yorkshire                      "
  16285.           "                           Ann Arbor, MI 48104                 "
  16286.           "                           USA                                 "
  16287.           "                                                               "
  16288.           "  For orders outside the U.S. please send check drawn on U.S.  "
  16289.           "  bank in U.S. dollars, or international money order in U.S.   "
  16290.           "  dollars.                                                     "
  16291.           "==============================================================="
  16292.           "     Name: ________________________________________________    "
  16293.           "  Address: ________________________________________________    "
  16294.           "           ________________________________________________    "
  16295.           "     City: ______________________   State: __    Zip: _____    "
  16296.           "                                                               "
  16297.           =================================================================
  16298.  
  16299.  
  16300.  
  16301.  
  16302.           Appendix B, OASIS products                                   page 247          Appendix B, OASIS products                                   page 247
  16303.  
  16304.  
  16305.  
  16306.  
  16307.  
  16308.  
  16309.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  16310.  
  16311.  
  16312.                              ------------------------
  16313.                              | Invoice & Order Form |                               Invoice & Order Form
  16314.                              ------------------------
  16315.  
  16316.           =================================================================
  16317.           "                       I N V O I C E                           "                                  I N V O I C E
  16318.           "==============================================================="
  16319.           " Date: __ / __ / __                PO#: ______________         "
  16320.           "---------------------------------------------------------------"
  16321.           " Qty     Description                            $/unit         "
  16322.           "---------------------------------------------------------------"
  16323.           "     |                                        |        |       "
  16324.           " __  |OASIS Demo package mail order           | $10.00 |___.__ "
  16325.           "     |                                        |        |       "
  16326.           " __  |OASIS Evaluation Registration           | $40.00 |___.__ "
  16327.           "     |(does not include disk)                 |        |       "
  16328.           "     |                                        |        |       "
  16329.           " __  |OASIS Evaluation Private Licence        | $60.00 |___.__ "
  16330.           "     |(registration, disks & manual on disk)  |        |       "
  16331.           "     |                                        |        |       "
  16332.           " __  |OASIS Evaluation Private Licence        | $80.00 |___.__ "
  16333.           "     |(registration, disks and manual)        |        |       "
  16334.           "     |                                        |        |       "
  16335.           " __  |OASIS Evaluation Commercial User Licence|$120.00 |___.__ "
  16336.           "     |(registration, disks and manual)        |        |       "
  16337.           "     |                                        |        |       "
  16338.           " __  |OASIS   Commercial User Licence         |$199.00 |___.__ "
  16339.           "     |(registration, disks and manual)        |        |       "
  16340.           "     |                                        |        |       "
  16341.           "==============================================================="
  16342.           "   Remit to:                                Subtotal: $____.__ "
  16343.           "         EUREKA SOFTWARE ASSOCIATES         Shipping: $____.__ "
  16344.           "         2344 Yorkshire                          Tax: $____.__ "
  16345.           "         Ann Arbor, MI 48104 USA               Total: $____.__ "                                                          Total
  16346.           "==============================================================="
  16347.           "  SOLD TO:                                                     "
  16348.           "                                                               "
  16349.           "     Name: ________________________________________________    "
  16350.           "  Address: ________________________________________________    "
  16351.           "           ________________________________________________    "
  16352.           "     City: ______________________   State: __    Zip: _____    "
  16353.           "  Country: ______________________                              "
  16354.           "                                                               "
  16355.           "---------------------------------------------------------------"
  16356.           "  SHIP TO:                                                     "
  16357.           "                                                               "
  16358.           "     Name: ________________________________________________    "
  16359.           "  Address: ________________________________________________    "
  16360.           "           ________________________________________________    "
  16361.           "     City: ______________________   State: __    Zip: _____    "
  16362.           "  Country: ______________________                              "
  16363.           "                                                               "
  16364.           =================================================================
  16365.  
  16366.  
  16367.  
  16368.           Appendix B, OASIS products                                   page 248          Appendix B, OASIS products                                   page 248
  16369.  
  16370.  
  16371.  
  16372.  
  16373.  
  16374.  
  16375.           OASIS Evaluation Reference Manual          OASIS Evaluation Reference Manual
  16376.  
  16377.  
  16378.  
  16379.  
  16380.  
  16381.  
  16382.  
  16383.  
  16384.  
  16385.  
  16386.  
  16387.  
  16388.  
  16389.  
  16390.  
  16391.  
  16392.  
  16393.  
  16394.  
  16395.  
  16396.  
  16397.  
  16398.  
  16399.  
  16400.  
  16401.  
  16402.  
  16403.  
  16404.  
  16405.  
  16406.  
  16407.  
  16408.  
  16409.  
  16410.  
  16411.  
  16412.  
  16413.  
  16414.  
  16415.  
  16416.  
  16417.  
  16418.  
  16419.  
  16420.  
  16421.  
  16422.  
  16423.  
  16424.  
  16425.  
  16426.  
  16427.  
  16428.  
  16429.  
  16430.  
  16431.  
  16432.  
  16433.  
  16434.           Appendix B, OASIS products                                   page 249          Appendix B, OASIS products                                   page 249
  16435.